Skip to content

Commit 0919478

Browse files
authored
Merge pull request #1940 from CEED/jeremy/rust-ceed-opt
rust - allow setting ceed OPT flags for rust, mostly for CI/cov
2 parents a285975 + 78eb7e1 commit 0919478

7 files changed

Lines changed: 22 additions & 16 deletions

File tree

.github/workflows/rust-test-with-style.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@ jobs:
3232
env:
3333
CC: ${{ matrix.compiler }}
3434
FC: gfortran
35-
run: cargo llvm-cov test --doctests --lcov --output-path lcov.info
35+
run: CARGO_CEED_OPT_FLAGS="-g -O0 -fno-inline" cargo llvm-cov test --doctests --lcov --output-path lcov.info
3636
- name: Codecov upload
3737
uses: codecov/codecov-action@v4
3838
with:

examples/rust/mesh/src/lib.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -48,7 +48,7 @@ pub fn build_cartesian_restriction(
4848
degree: usize,
4949
num_comp: usize,
5050
num_qpts: usize,
51-
) -> libceed::Result<(ElemRestriction, ElemRestriction)> {
51+
) -> libceed::Result<(ElemRestriction<'_>, ElemRestriction<'_>)> {
5252
let p = degree + 1;
5353
let num_nodes = p.pow(dim as u32); // number of nodes per element
5454
let elem_qpts = num_qpts.pow(dim as u32); // number of quadrature pts per element
@@ -119,7 +119,7 @@ pub fn cartesian_mesh_coords(
119119
num_xyz: [usize; 3],
120120
mesh_degree: usize,
121121
mesh_size: usize,
122-
) -> libceed::Result<Vector> {
122+
) -> libceed::Result<Vector<'_>> {
123123
let p = mesh_degree + 1;
124124
let mut num_d = [0; 3];
125125
let mut scalar_size = 1;

rust/libceed-sys/build.rs

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@ fn main() {
1414
} else {
1515
// Install libceed.a or libceed.so to $OUT_DIR/lib
1616
let makeflags = env("CARGO_MAKEFLAGS").unwrap();
17+
let optflags = env("CARGO_CEED_OPT_FLAGS").unwrap_or_else(|| "".to_string());
1718
let mut make = Command::new("make");
1819
make.arg("install")
1920
.arg(format!("prefix={}", out_dir.to_string_lossy()))
@@ -28,6 +29,9 @@ fn main() {
2829
.arg("FC=") // Don't try to find Fortran (unused library build/install)
2930
.env("MAKEFLAGS", makeflags)
3031
.current_dir("c-src");
32+
if optflags.len() > 0 {
33+
make.env("OPT", optflags);
34+
}
3135
if statik {
3236
make.arg("STATIC=1");
3337
}

rust/libceed/src/operator.rs

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -175,7 +175,7 @@ impl<'a> OperatorField<'a> {
175175
/// # Ok(())
176176
/// # }
177177
/// ```
178-
pub fn elem_restriction(&self) -> ElemRestrictionOpt {
178+
pub fn elem_restriction(&self) -> ElemRestrictionOpt<'_> {
179179
if self.elem_restriction.ptr == unsafe { bind_ceed::CEED_ELEMRESTRICTION_NONE } {
180180
ElemRestrictionOpt::None
181181
} else {
@@ -237,7 +237,7 @@ impl<'a> OperatorField<'a> {
237237
/// # Ok(())
238238
/// # }
239239
/// ```
240-
pub fn basis(&self) -> BasisOpt {
240+
pub fn basis(&self) -> BasisOpt<'_> {
241241
if self.basis.ptr == unsafe { bind_ceed::CEED_BASIS_NONE } {
242242
BasisOpt::None
243243
} else {
@@ -285,7 +285,7 @@ impl<'a> OperatorField<'a> {
285285
/// # Ok(())
286286
/// # }
287287
/// ```
288-
pub fn vector(&self) -> VectorOpt {
288+
pub fn vector(&self) -> VectorOpt<'_> {
289289
if self.vector.ptr == unsafe { bind_ceed::CEED_VECTOR_ACTIVE } {
290290
VectorOpt::Active
291291
} else if self.vector.ptr == unsafe { bind_ceed::CEED_VECTOR_NONE } {
@@ -856,7 +856,7 @@ impl<'a> Operator<'a> {
856856
/// # Ok(())
857857
/// # }
858858
/// ```
859-
pub fn inputs(&self) -> crate::Result<Vec<crate::OperatorField>> {
859+
pub fn inputs(&self) -> crate::Result<Vec<crate::OperatorField<'_>>> {
860860
// Get array of raw C pointers for inputs
861861
let mut num_inputs = 0;
862862
let mut inputs_ptr = std::ptr::null_mut();
@@ -926,7 +926,7 @@ impl<'a> Operator<'a> {
926926
/// # Ok(())
927927
/// # }
928928
/// ```
929-
pub fn outputs(&self) -> crate::Result<Vec<crate::OperatorField>> {
929+
pub fn outputs(&self) -> crate::Result<Vec<crate::OperatorField<'_>>> {
930930
// Get array of raw C pointers for outputs
931931
let mut num_outputs = 0;
932932
let mut outputs_ptr = std::ptr::null_mut();

rust/libceed/src/qfunction.rs

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -467,7 +467,7 @@ impl<'a> QFunctionCore<'a> {
467467
})
468468
}
469469

470-
pub fn inputs(&self) -> crate::Result<&[QFunctionField]> {
470+
pub fn inputs(&self) -> crate::Result<&[QFunctionField<'_>]> {
471471
// Get array of raw C pointers for inputs
472472
let mut num_inputs = 0;
473473
let mut inputs_ptr = std::ptr::null_mut();
@@ -487,7 +487,7 @@ impl<'a> QFunctionCore<'a> {
487487
Ok(inputs_slice)
488488
}
489489

490-
pub fn outputs(&self) -> crate::Result<&[QFunctionField]> {
490+
pub fn outputs(&self) -> crate::Result<&[QFunctionField<'_>]> {
491491
// Get array of raw C pointers for outputs
492492
let mut num_outputs = 0;
493493
let mut outputs_ptr = std::ptr::null_mut();
@@ -826,7 +826,7 @@ impl<'a> QFunction<'a> {
826826
/// # Ok(())
827827
/// # }
828828
/// ```
829-
pub fn inputs(&self) -> crate::Result<&[QFunctionField]> {
829+
pub fn inputs(&self) -> crate::Result<&[QFunctionField<'_>]> {
830830
self.qf_core.inputs()
831831
}
832832

@@ -856,7 +856,7 @@ impl<'a> QFunction<'a> {
856856
/// # Ok(())
857857
/// # }
858858
/// ```
859-
pub fn outputs(&self) -> crate::Result<&[QFunctionField]> {
859+
pub fn outputs(&self) -> crate::Result<&[QFunctionField<'_>]> {
860860
self.qf_core.outputs()
861861
}
862862
}
@@ -960,7 +960,7 @@ impl<'a> QFunctionByName<'a> {
960960
/// # Ok(())
961961
/// # }
962962
/// ```
963-
pub fn inputs(&self) -> crate::Result<&[QFunctionField]> {
963+
pub fn inputs(&self) -> crate::Result<&[QFunctionField<'_>]> {
964964
self.qf_core.inputs()
965965
}
966966

@@ -979,7 +979,7 @@ impl<'a> QFunctionByName<'a> {
979979
/// # Ok(())
980980
/// # }
981981
/// ```
982-
pub fn outputs(&self) -> crate::Result<&[QFunctionField]> {
982+
pub fn outputs(&self) -> crate::Result<&[QFunctionField<'_>]> {
983983
self.qf_core.outputs()
984984
}
985985
}

rust/libceed/src/vector.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -561,7 +561,7 @@ impl<'a> Vector<'a> {
561561
/// # Ok(())
562562
/// # }
563563
/// ```
564-
pub fn view(&self) -> crate::Result<VectorView> {
564+
pub fn view(&self) -> crate::Result<VectorView<'_>> {
565565
VectorView::new(self)
566566
}
567567

@@ -583,7 +583,7 @@ impl<'a> Vector<'a> {
583583
/// # Ok(())
584584
/// # }
585585
/// ```
586-
pub fn view_mut(&mut self) -> crate::Result<VectorViewMut> {
586+
pub fn view_mut(&mut self) -> crate::Result<VectorViewMut<'_>> {
587587
VectorViewMut::new(self)
588588
}
589589

tests/t599-operator.c

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -124,7 +124,9 @@ int main(int argc, char **argv) {
124124
CeedVectorRestoreArrayRead(v, &v_array);
125125
// Summing 9 reference elements, each 2x2 => 36 sq units area
126126
if (fabs(sum - 4.0 * num_elem) > CEED_EPSILON * 5e3) {
127+
// LCOV_EXCL_START
127128
printf("Incorrect area computed, %g != %g (abs error %g)\n", sum, 4.0 * num_elem, fabs(sum - 4.0 * num_elem));
129+
// LCOV_EXCL_STOP
128130
}
129131
}
130132

0 commit comments

Comments
 (0)