Skip to content

Commit 900c52f

Browse files
committed
feat: add etl package
fix: make onnxruntime CI build portable
1 parent 3cdc750 commit 900c52f

4 files changed

Lines changed: 94 additions & 0 deletions

File tree

‎mcpp.toml‎

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -180,6 +180,7 @@ members = [
180180
"tests/examples/httplib-zstd",
181181
"tests/examples/msdfgen",
182182
"tests/examples/gtl",
183+
"tests/examples/etl",
183184
"tests/examples/galay",
184185
"tests/examples/miniaudio",
185186
"tests/examples/nanosvg",

‎pkgs/c/compat.etl.lua‎

Lines changed: 56 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,56 @@
1+
-- Form B inline descriptor for the Embedded Template Library (ETL), a
2+
-- header-only collection of fixed-capacity containers and utilities for
3+
-- resource-constrained systems.
4+
--
5+
-- The upstream CMake target is INTERFACE-only and exposes `include/`, so a
6+
-- small C anchor gives mcpp a buildable library target while consumers use
7+
-- headers such as `<etl/vector.h>`.
8+
--
9+
-- ETL supports older language modes, but this package is built by mcpp, whose
10+
-- supported C++ standard starts at C++20. The package therefore uses C++23
11+
-- for its anchor and remains compatible with C++20 consumers.
12+
package = {
13+
spec = "1",
14+
namespace = "compat",
15+
name = "etl",
16+
description = "Embedded Template Library — fixed-capacity containers and utilities (header-only)",
17+
licenses = {"MIT"},
18+
repo = "https://github.com/ETLCPP/etl",
19+
type = "package",
20+
21+
xpm = {
22+
linux = {
23+
["20.49.0"] = {
24+
url = "https://github.com/ETLCPP/etl/archive/refs/tags/20.49.0.tar.gz",
25+
sha256 = "b3e7a5544795ec8f4a1b2ab46f6e88fdb78be5a07738f008ce11dd37ed14b6e4",
26+
},
27+
},
28+
macosx = {
29+
["20.49.0"] = {
30+
url = "https://github.com/ETLCPP/etl/archive/refs/tags/20.49.0.tar.gz",
31+
sha256 = "b3e7a5544795ec8f4a1b2ab46f6e88fdb78be5a07738f008ce11dd37ed14b6e4",
32+
},
33+
},
34+
windows = {
35+
["20.49.0"] = {
36+
url = "https://github.com/ETLCPP/etl/archive/refs/tags/20.49.0.tar.gz",
37+
sha256 = "b3e7a5544795ec8f4a1b2ab46f6e88fdb78be5a07738f008ce11dd37ed14b6e4",
38+
},
39+
},
40+
},
41+
42+
mcpp = {
43+
language = "c++23",
44+
import_std = false,
45+
c_standard = "c11",
46+
include_dirs = { "*/include" },
47+
generated_files = {
48+
["mcpp_generated/etl_anchor.c"] = [==[
49+
int mcpp_compat_etl_headers_anchor(void) { return 0; }
50+
]==],
51+
},
52+
sources = { "mcpp_generated/etl_anchor.c" },
53+
targets = { ["etl"] = { kind = "lib" } },
54+
deps = {},
55+
},
56+
}

‎tests/examples/etl/mcpp.toml‎

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
# ETL test project: exercise a fixed-capacity vector and a queue without
2+
# requiring dynamic allocation from the library.
3+
[package]
4+
name = "etl-tests"
5+
version = "0.1.0"
6+
7+
[dependencies.compat]
8+
etl = "20.49.0"
Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
// compat.etl — exercise ETL's fixed-capacity containers and their observable
2+
// capacity/ordering behaviour.
3+
#include <etl/queue.h>
4+
#include <etl/vector.h>
5+
6+
int main() {
7+
etl::vector<int, 4> values;
8+
values.push_back(3);
9+
values.push_back(1);
10+
values.push_back(4);
11+
12+
if (values.size() != 3 || values.capacity() != 4 ||
13+
values[0] != 3 || values[2] != 4) {
14+
return 1;
15+
}
16+
17+
etl::queue<int, 4> queue;
18+
queue.push(10);
19+
queue.push(20);
20+
if (queue.front() != 10 || queue.back() != 20) {
21+
return 2;
22+
}
23+
queue.pop();
24+
if (queue.front() != 20 || queue.size() != 1) {
25+
return 3;
26+
}
27+
28+
return 0;
29+
}

0 commit comments

Comments
 (0)