From c5d2f7b0bf36606d4faac7a30015d11faf340a04 Mon Sep 17 00:00:00 2001 From: "embedded-releaser-app[bot]" <190257042+embedded-releaser-app[bot]@users.noreply.github.com> Date: Fri, 28 Aug 2026 05:22:35 +0000 Subject: [PATCH] chore(main): release 8.0.0 --- .release-please-manifest.json | 4 +- CHANGELOG.md | 137 ++++++++++- CMakeLists.txt | 444 +++++++++++++++++----------------- sonar-project.properties | 2 +- 4 files changed, 361 insertions(+), 226 deletions(-) diff --git a/.release-please-manifest.json b/.release-please-manifest.json index 6734e1b50..6e5daa013 100644 --- a/.release-please-manifest.json +++ b/.release-please-manifest.json @@ -1,3 +1,3 @@ -{ - ".": "7.2.0" +{ + ".": "8.0.0" } diff --git a/CHANGELOG.md b/CHANGELOG.md index 03510954e..743b2ecd4 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,6 +7,141 @@ All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](http://keepachangelog.com/en/1.0.0/) +## [8.0.0](https://github.com/embedded-pro/embedded-infra-lib/compare/v7.2.0...v8.0.0) (2026-08-28) + + +### ⚠ BREAKING CHANGES + +* sesame stack which does not execute in interrupt context ([#514](https://github.com/embedded-pro/embedded-infra-lib/issues/514)) +* refactor adc to support multiple samples ([#530](https://github.com/embedded-pro/embedded-infra-lib/issues/530)) +* generic pairing/bonding classes updated ([#330](https://github.com/embedded-pro/embedded-infra-lib/issues/330)) +* ble interface improvements ([#300](https://github.com/embedded-pro/embedded-infra-lib/issues/300)) +* security for MessageCommunication ([#294](https://github.com/embedded-pro/embedded-infra-lib/issues/294)) + +### Features + +* Add 256bit ecdsa key support for upgrade pack builder ([#657](https://github.com/embedded-pro/embedded-infra-lib/issues/657)) ([a72b4d4](https://github.com/embedded-pro/embedded-infra-lib/commit/a72b4d4a85df0a207675c64a09c630d59a26b20c)) +* Add aes ecb and cmac ([#15](https://github.com/embedded-pro/embedded-infra-lib/issues/15)) ([5b201c6](https://github.com/embedded-pro/embedded-infra-lib/commit/5b201c62a0befb376e4dd691424b900d009fa867)) +* Add connection factory with name resolver mbed tls ([#536](https://github.com/embedded-pro/embedded-infra-lib/issues/536)) ([af200d2](https://github.com/embedded-pro/embedded-infra-lib/commit/af200d2262340ed065ed36dade63ea9639210231)) +* Add custom clang-format file support ([#668](https://github.com/embedded-pro/embedded-infra-lib/issues/668)) ([3653875](https://github.com/embedded-pro/embedded-infra-lib/commit/3653875fa54af2f6c5f610e07177a044821c3b86)) +* Add documentation ([#223](https://github.com/embedded-pro/embedded-infra-lib/issues/223)) ([d710807](https://github.com/embedded-pro/embedded-infra-lib/commit/d7108073d4bc139899bbffd0f46de487d5f591ad)) +* Add ExecuteUntil to event dispatchers, add EventDispatcherThreadAware ([#526](https://github.com/embedded-pro/embedded-infra-lib/issues/526)) ([d05d1f3](https://github.com/embedded-pro/embedded-infra-lib/commit/d05d1f3fb8272ebe48407cfa42cfe9c938683106)) +* Add FlashHeterogenous ([#549](https://github.com/embedded-pro/embedded-infra-lib/issues/549)) ([a0deadb](https://github.com/embedded-pro/embedded-infra-lib/commit/a0deadb8bd6800b1cda2a1c28f3f4d2713b37c04)) +* Add generic Cortex-M layer (startup, interrupts, fault tracer) ([#95](https://github.com/embedded-pro/embedded-infra-lib/issues/95)) ([b1056e8](https://github.com/embedded-pro/embedded-infra-lib/commit/b1056e80ab5376d7e4ee821c5b3c5680bc01f751)) +* Add LowPriorityInterrupt and DataWatchpointAndTrace ([#99](https://github.com/embedded-pro/embedded-infra-lib/issues/99)) ([8614b49](https://github.com/embedded-pro/embedded-infra-lib/commit/8614b493e1d63b5b149862a90dad2a3ca36fb237)) +* Add NotifyingSharedOptional::OnAllocatable overload ([#667](https://github.com/embedded-pro/embedded-infra-lib/issues/667)) ([cb37f67](https://github.com/embedded-pro/embedded-infra-lib/commit/cb37f67e787ef608dfe7f60aa5df67b05aa71508)) +* Add osal/threadx/EventDispatcherThreadX ([#637](https://github.com/embedded-pro/embedded-infra-lib/issues/637)) ([8c66ddd](https://github.com/embedded-pro/embedded-infra-lib/commit/8c66dddb6d6efa5d25d097f5c7ffbc74b8362dc9)) +* Add protobuf/echo/ProtoMessageBuilder ([#416](https://github.com/embedded-pro/embedded-infra-lib/issues/416)) ([f5260dd](https://github.com/embedded-pro/embedded-infra-lib/commit/f5260dd65ae4adfea14755dfef04a18074441951)) +* Add Segger RTT tracing output option ([#572](https://github.com/embedded-pro/embedded-infra-lib/issues/572)) ([16529d7](https://github.com/embedded-pro/embedded-infra-lib/commit/16529d773417547c2c08163eedf6fb8ff7035227)) +* Add ServiceProxyResponseQueue ([#338](https://github.com/embedded-pro/embedded-infra-lib/issues/338)) ([88cb197](https://github.com/embedded-pro/embedded-infra-lib/commit/88cb197acb2f38d3b6fad00f88983cf15d49c864)) +* Add streaming of little endian mac addresses ([#336](https://github.com/embedded-pro/embedded-infra-lib/issues/336)) ([e3d7fd8](https://github.com/embedded-pro/embedded-infra-lib/commit/e3d7fd8f12ad934b98a86a6b27d8f574049f12b3)) +* Add targets in order upgrade pack ([#488](https://github.com/embedded-pro/embedded-infra-lib/issues/488)) ([e528794](https://github.com/embedded-pro/embedded-infra-lib/commit/e528794ef639b5884ade70aa79f6048c3a8ccf58)) +* Add websocket client example ([#235](https://github.com/embedded-pro/embedded-infra-lib/issues/235)) ([d4aa174](https://github.com/embedded-pro/embedded-infra-lib/commit/d4aa1740d7ccf2d4468d6afc0c54ed4d256636ce)) +* Added EcDsa256 bit support for sign and verify ([#651](https://github.com/embedded-pro/embedded-infra-lib/issues/651)) ([bc39360](https://github.com/embedded-pro/embedded-infra-lib/commit/bc39360c56bf232e5ac8a951323e2bacd9f34189)) +* Added generic gatt dis characteristic uuid ([#457](https://github.com/embedded-pro/embedded-infra-lib/issues/457)) ([be6fdde](https://github.com/embedded-pro/embedded-infra-lib/commit/be6fddea702f47ef816fe4fc976cdd609c1fbe87)) +* Added hal/generic/UartGeneric and hal/generic/SynchronousUartGeneric ([#535](https://github.com/embedded-pro/embedded-infra-lib/issues/535)) ([799e0ee](https://github.com/embedded-pro/embedded-infra-lib/commit/799e0eeae498521471a48724fee54564ecb295d5)) +* Added infra::MockFunction helper function for testing callbacks via infra::Function ([#658](https://github.com/embedded-pro/embedded-infra-lib/issues/658)) ([49810ee](https://github.com/embedded-pro/embedded-infra-lib/commit/49810eef4d70e477dc8d96b947263d621fe47bda)) +* Added SerialCommunicationLoopback ([#440](https://github.com/embedded-pro/embedded-infra-lib/issues/440)) ([2c87dfb](https://github.com/embedded-pro/embedded-infra-lib/commit/2c87dfb5ecd1e76669af69a97f80c29bfab773b9)) +* Ble interface improvements ([#300](https://github.com/embedded-pro/embedded-infra-lib/issues/300)) ([88a4689](https://github.com/embedded-pro/embedded-infra-lib/commit/88a4689e8f08e2afe856170aa5b5036f69d1610c)) +* Changed compile definitions to be compatible with the gnu assembler ([#554](https://github.com/embedded-pro/embedded-infra-lib/issues/554)) ([5a5e5dc](https://github.com/embedded-pro/embedded-infra-lib/commit/5a5e5dca2cc522875b13f8a8ceebc73037dc0c94)) +* Changed EMIL_ENABLE_GLOBAL_TRACING define to EMIL_ENABLE_TRACING and EMIL_DISABLE_TRACING ([#521](https://github.com/embedded-pro/embedded-infra-lib/issues/521)) ([2d4eb48](https://github.com/embedded-pro/embedded-infra-lib/commit/2d4eb489817fc36b35ff758bf4d9acbc3e7ceda5)) +* Crc with automatic table generation ([#636](https://github.com/embedded-pro/embedded-infra-lib/issues/636)) ([23ac162](https://github.com/embedded-pro/embedded-infra-lib/commit/23ac162fbd3be451bd0b6a3d4488e6c8b9d38b1b)) +* Dd elliptic curve ([#14](https://github.com/embedded-pro/embedded-infra-lib/issues/14)) ([71e59b8](https://github.com/embedded-pro/embedded-infra-lib/commit/71e59b877a4e18de0294ff1fd4b289ca0dc43f03)) +* Disabled documentation warning when compiling with AppleClang ([#618](https://github.com/embedded-pro/embedded-infra-lib/issues/618)) ([5fd230a](https://github.com/embedded-pro/embedded-infra-lib/commit/5fd230aa0c71787108fa7320dddc3478eee8b2ac)) +* Downgrade mbedtls to 3.2.1 from 3.3.0 ([bdec832](https://github.com/embedded-pro/embedded-infra-lib/commit/bdec83287eac3f7a27a9a559821584980633fcfc)) +* Downgrade mbedtls to 3.2.1 from 3.3.0 ([#237](https://github.com/embedded-pro/embedded-infra-lib/issues/237)) ([bdec832](https://github.com/embedded-pro/embedded-infra-lib/commit/bdec83287eac3f7a27a9a559821584980633fcfc)) +* **echo_console:** Add support for ECHO over websockets over http ([#230](https://github.com/embedded-pro/embedded-infra-lib/issues/230)) ([b814f0e](https://github.com/embedded-pro/embedded-infra-lib/commit/b814f0e6a85f2b5a3a70b01c114d2d9f5ef5d78d)) +* Extend gpio interrupt interface to enable immediate interrupt handlers ([#721](https://github.com/embedded-pro/embedded-infra-lib/issues/721)) ([95ddf85](https://github.com/embedded-pro/embedded-infra-lib/commit/95ddf856192b8eb7e7282f3cb6f4e028aef200ad)) +* Flash sfdp autodiscovery ([#94](https://github.com/embedded-pro/embedded-infra-lib/issues/94)) ([321a369](https://github.com/embedded-pro/embedded-infra-lib/commit/321a369d9ef75a41b212c38578aba774bd47bfb0)) +* Forward tags to scenario request handler ([#483](https://github.com/embedded-pro/embedded-infra-lib/issues/483)) ([a66f711](https://github.com/embedded-pro/embedded-infra-lib/commit/a66f711cd582fa099fe92db0d4995d2f052aba19)) +* Gap proto extension before sesame ([#688](https://github.com/embedded-pro/embedded-infra-lib/issues/688)) ([d5efa72](https://github.com/embedded-pro/embedded-infra-lib/commit/d5efa729fd51f7c734e6ee751eb255f4acfc8246)) +* Generate string literals ([#699](https://github.com/embedded-pro/embedded-infra-lib/issues/699)) ([d272b1f](https://github.com/embedded-pro/embedded-infra-lib/commit/d272b1f8774435755ecb8e0e51f8a1873612b692)) +* Generic pairing/bonding classes updated ([#330](https://github.com/embedded-pro/embedded-infra-lib/issues/330)) ([dbda405](https://github.com/embedded-pro/embedded-infra-lib/commit/dbda405cc2ef2d356fbe707df5389042a49c7959)) +* Hal qemu ([#90](https://github.com/embedded-pro/embedded-infra-lib/issues/90)) ([9c3d4c3](https://github.com/embedded-pro/embedded-infra-lib/commit/9c3d4c32bba0123abdc0013b8b9d5aea26e1f103)) +* HttpClientBasic will now reset the contentError flag before a new connection is attempted ([#598](https://github.com/embedded-pro/embedded-infra-lib/issues/598)) ([c0e6755](https://github.com/embedded-pro/embedded-infra-lib/commit/c0e67552bc328b1947f44ed0370cea6820c0512d)) +* Implement persisted mbed tls session ([#602](https://github.com/embedded-pro/embedded-infra-lib/issues/602)) ([53d45ce](https://github.com/embedded-pro/embedded-infra-lib/commit/53d45ce8006c6a6e504ee90266feaa8b3ad235bc)) +* Made EventDispatcher and EventDispatcherWithWeakptr exception safe when executing an action ([#525](https://github.com/embedded-pro/embedded-infra-lib/issues/525)) ([46a118c](https://github.com/embedded-pro/embedded-infra-lib/commit/46a118c9d792981f282abcf8bb980bc754aa152b)) +* Merge upstream changes ([#279](https://github.com/embedded-pro/embedded-infra-lib/issues/279)) ([9856f23](https://github.com/embedded-pro/embedded-infra-lib/commit/9856f2304b818f69926db810aabadbd2c1a82659)) +* Optional tracing ([#489](https://github.com/embedded-pro/embedded-infra-lib/issues/489)) ([0c594d9](https://github.com/embedded-pro/embedded-infra-lib/commit/0c594d954fa1e5d9458d0dbbbd8f186da735793a)) +* **osal:** Add osal ([#82](https://github.com/embedded-pro/embedded-infra-lib/issues/82)) ([3f5c568](https://github.com/embedded-pro/embedded-infra-lib/commit/3f5c56868f63ea5d53da39caa63248b6536196b3)) +* Promote all qemu/cortex components to cortex_m ([#104](https://github.com/embedded-pro/embedded-infra-lib/issues/104)) ([b2ac7ed](https://github.com/embedded-pro/embedded-infra-lib/commit/b2ac7ed7f6121f9aa1b1e15a68986af0cfca63de)) +* Protobuf: add support for optional keyword ([#661](https://github.com/embedded-pro/embedded-infra-lib/issues/661)) ([82032aa](https://github.com/embedded-pro/embedded-infra-lib/commit/82032aaeceed20d8b5fd588456e9b600da7a8263)) +* Protobuf: add support for optional keyword ([#665](https://github.com/embedded-pro/embedded-infra-lib/issues/665)) ([b33ed06](https://github.com/embedded-pro/embedded-infra-lib/commit/b33ed0647d149cb6af81bcbe9daeeb6c4c6e92ab)) +* Refactor adc to support multiple samples ([#530](https://github.com/embedded-pro/embedded-infra-lib/issues/530)) ([419f636](https://github.com/embedded-pro/embedded-infra-lib/commit/419f636bd76f2c0ee2f7524ca548e724bf479e27)) +* Removed Dac.hpp ([#439](https://github.com/embedded-pro/embedded-infra-lib/issues/439)) ([4b52156](https://github.com/embedded-pro/embedded-infra-lib/commit/4b5215609b9ee2a6ca72d8d660b8c797aa3e31c9)) +* Security for MessageCommunication ([#294](https://github.com/embedded-pro/embedded-infra-lib/issues/294)) ([f6c3f56](https://github.com/embedded-pro/embedded-infra-lib/commit/f6c3f56e73a8324f87476908a1ef07f243350093)) +* Services/network/HttpClientBasic is now able to process more than 1 request ([#576](https://github.com/embedded-pro/embedded-infra-lib/issues/576)) ([0df2625](https://github.com/embedded-pro/embedded-infra-lib/commit/0df26250e0e0894e7a3bb9af2d0306aa4d6cc312)) +* Sesame stack which does not execute in interrupt context ([#514](https://github.com/embedded-pro/embedded-infra-lib/issues/514)) ([4dc5736](https://github.com/embedded-pro/embedded-infra-lib/commit/4dc5736b2814734a66a1de75d2eabb356d1ed6ff)) +* Support payloads bigger than the MaxSendStreamSize ([#331](https://github.com/embedded-pro/embedded-infra-lib/issues/331)) ([c411f66](https://github.com/embedded-pro/embedded-infra-lib/commit/c411f66f7ae972786a7fa1134989ab8e4f0631aa)) +* Support streaming echo messages ([#435](https://github.com/embedded-pro/embedded-infra-lib/issues/435)) ([07756bb](https://github.com/embedded-pro/embedded-infra-lib/commit/07756bb41f068adbf3a2eb76adb2778fff5491f0)) +* Update usb interface ([2b9fcb7](https://github.com/embedded-pro/embedded-infra-lib/commit/2b9fcb7b3e385669141604776217268741b8e876)) +* Update usb interface ([a955fab](https://github.com/embedded-pro/embedded-infra-lib/commit/a955fab6f32ef020f853de01d118cf3934208ce6)) +* Update usb interface ([d0d47dc](https://github.com/embedded-pro/embedded-infra-lib/commit/d0d47dc608aba2cd3f2e2931df1f60e57d455760)) +* Update usb interface ([e82c7d0](https://github.com/embedded-pro/embedded-infra-lib/commit/e82c7d0bbcb976325a985119575eab0c2a912136)) +* Usb host ([2bf858e](https://github.com/embedded-pro/embedded-infra-lib/commit/2bf858e41315fa26417c172d4fcaf39ea2c3c12e)) +* Usb host ([d928d0a](https://github.com/embedded-pro/embedded-infra-lib/commit/d928d0a4e354fbe035b981de3f9082c007a5ddd5)) +* Workaround OutputStream optimization issue with Visual Studio 2019 ([#258](https://github.com/embedded-pro/embedded-infra-lib/issues/258)) ([ea3de1e](https://github.com/embedded-pro/embedded-infra-lib/commit/ea3de1eeaf99649cdbf558cf11c650795662c2e9)) + + +### Bug Fixes + +* Add acd sources to lwip ([#400](https://github.com/embedded-pro/embedded-infra-lib/issues/400)) ([a4f68ef](https://github.com/embedded-pro/embedded-infra-lib/commit/a4f68efdf19e7b556cb6fe2cba0165908f56be8c)) +* Add check for availability of __has_cpp_attribute ([#218](https://github.com/embedded-pro/embedded-infra-lib/issues/218)) ([98b5c8d](https://github.com/embedded-pro/embedded-infra-lib/commit/98b5c8d89e7aab8819a4c2668be8aebe886cf303)), closes [#134](https://github.com/embedded-pro/embedded-infra-lib/issues/134) +* Add missing overloads to JsonObjectFormatter ([#212](https://github.com/embedded-pro/embedded-infra-lib/issues/212)) ([c4047c3](https://github.com/embedded-pro/embedded-infra-lib/commit/c4047c3f974ba6e35bc5368dfee88ba6baf6ea9e)) +* Added workaround mbedtls and clang-cl incomatibility ([#441](https://github.com/embedded-pro/embedded-infra-lib/issues/441)) ([063b595](https://github.com/embedded-pro/embedded-infra-lib/commit/063b59508f1d09c2675b338c7b54d64934f7792c)) +* Avoid overflow when scheduling TimerSingleShot ([#612](https://github.com/embedded-pro/embedded-infra-lib/issues/612)) ([ea4683c](https://github.com/embedded-pro/embedded-infra-lib/commit/ea4683c464a2272936995bc89a9ff9bed506d1a7)) +* Backport upstream bug fixes from amp-embedded-infra-lib ([#105](https://github.com/embedded-pro/embedded-infra-lib/issues/105)) ([8cd6166](https://github.com/embedded-pro/embedded-infra-lib/commit/8cd6166b45ad7671a5a41feacf7a8cb0b771d630)) +* Ble advertisement parser erroneous data handling ([#600](https://github.com/embedded-pro/embedded-infra-lib/issues/600)) ([f6d6b5e](https://github.com/embedded-pro/embedded-infra-lib/commit/f6d6b5efb7ee6bad5d13079310d40280803586c7)) +* BufferingStreamReader OOB access and Echo segments calculated correctly ([#569](https://github.com/embedded-pro/embedded-infra-lib/issues/569)) ([b1c1d12](https://github.com/embedded-pro/embedded-infra-lib/commit/b1c1d12d8bb3414cfd52b6b295388c472c1f7f12)) +* Ccache ([#17](https://github.com/embedded-pro/embedded-infra-lib/issues/17)) ([2834a8c](https://github.com/embedded-pro/embedded-infra-lib/commit/2834a8cd60244125a9237a466a04c7219b5be61d)) +* ConnectionMbedTls no longer calls DataReceived() with 0 bytes ([#585](https://github.com/embedded-pro/embedded-infra-lib/issues/585)) ([cd74d66](https://github.com/embedded-pro/embedded-infra-lib/commit/cd74d664717066664cbb99cc7619a7919dffbcac)) +* Correct order of destruction in EchoForwarderToSerial. ([#291](https://github.com/embedded-pro/embedded-infra-lib/issues/291)) ([3267831](https://github.com/embedded-pro/embedded-infra-lib/commit/32678313eb79ee84165c358cb392e5915323ab64)) +* Corrected incorrect destructor syntax ([#460](https://github.com/embedded-pro/embedded-infra-lib/issues/460)) ([e01dd98](https://github.com/embedded-pro/embedded-infra-lib/commit/e01dd985d0d4699dc859d3e8fc375c72dccf8a89)) +* Cpp:S6232 well-defined type-punning method should be used instead of a union-based one ([d809c17](https://github.com/embedded-pro/embedded-infra-lib/commit/d809c173cacefd3bf2d661718111d5d301a95fc1)) +* CucumberWireProtocolFormatter; max string value size does not fit into stepMatchArgumentsBuffer. ([#311](https://github.com/embedded-pro/embedded-infra-lib/issues/311)) ([5504202](https://github.com/embedded-pro/embedded-infra-lib/commit/55042025bfe5c631a2c247a6e90a23d0f437a2fb)) +* Decouple host and embedded builds ([#225](https://github.com/embedded-pro/embedded-infra-lib/issues/225)) ([d443b16](https://github.com/embedded-pro/embedded-infra-lib/commit/d443b165b0b2bc821735aa10e6c2fa392299f1fe)) +* Destruction of HttpClientJson while resetting the reader resulted in memory corruption ([#404](https://github.com/embedded-pro/embedded-infra-lib/issues/404)) ([ed8a8a0](https://github.com/embedded-pro/embedded-infra-lib/commit/ed8a8a0e5893074fc56fde94cfdb003a870e930c)) +* Detaching HttpClient while in HeaderAvailable resulted in a crash ([#406](https://github.com/embedded-pro/embedded-infra-lib/issues/406)) ([a905a30](https://github.com/embedded-pro/embedded-infra-lib/commit/a905a306be194c7cf6380e70cf83b668c8d27425)) +* Duplicate header guard HAL_UART_HOST_HPP ([#558](https://github.com/embedded-pro/embedded-infra-lib/issues/558)) ([a8b1e63](https://github.com/embedded-pro/embedded-infra-lib/commit/a8b1e639d42718fab274590a38f548ffe02270c0)) +* Echo: only ContinueReceiveMessage() when readerPtr != nullptr ([#701](https://github.com/embedded-pro/embedded-infra-lib/issues/701)) ([81c87c4](https://github.com/embedded-pro/embedded-infra-lib/commit/81c87c4926cbdb89830c4003277a1919a26a6cec)) +* **echo:** Fix generation of tracer class for empty services ([#671](https://github.com/embedded-pro/embedded-infra-lib/issues/671)) ([751fefd](https://github.com/embedded-pro/embedded-infra-lib/commit/751fefdd673e364c492efcaa2bf892281f73c396)) +* **echo:** Support serializing nested messages ([#670](https://github.com/embedded-pro/embedded-infra-lib/issues/670)) ([63c55e0](https://github.com/embedded-pro/embedded-infra-lib/commit/63c55e048888397a3b163762e919256e4fe1f2da)) +* Emil test helpers ([#87](https://github.com/embedded-pro/embedded-infra-lib/issues/87)) ([2848dbf](https://github.com/embedded-pro/embedded-infra-lib/commit/2848dbf163a6ebf159e29f7f4f73b96f7773d20d)) +* Enable service scoping of method invocations in services.echo_console ([#325](https://github.com/embedded-pro/embedded-infra-lib/issues/325)) ([7090a40](https://github.com/embedded-pro/embedded-infra-lib/commit/7090a407f50d89073c468381e5207f1c0f56b6c1)) +* Ensure forwarding constructors have constraints ([#290](https://github.com/embedded-pro/embedded-infra-lib/issues/290)) ([5015938](https://github.com/embedded-pro/embedded-infra-lib/commit/50159383787e330ea784b684da5f6dfc47b49113)) +* **external/protoc:** Download protoc for correct host architecture ([#214](https://github.com/embedded-pro/embedded-infra-lib/issues/214)) ([6ed6bd1](https://github.com/embedded-pro/embedded-infra-lib/commit/6ed6bd129cb33ce2627b8f5167eced74bc8656b3)) +* GattClient notification ([#284](https://github.com/embedded-pro/embedded-infra-lib/issues/284)) ([15ff387](https://github.com/embedded-pro/embedded-infra-lib/commit/15ff3873f9f57169217c6a4337f9fac7d1b1f032)) +* Handle echo message split over multiple streams ([#481](https://github.com/embedded-pro/embedded-infra-lib/issues/481)) ([37d7878](https://github.com/embedded-pro/embedded-infra-lib/commit/37d7878f709090e9d556e9b84c7bf6eeafa1c6e0)) +* Heap memory leak on SerializerFactory::OnHeap ([#561](https://github.com/embedded-pro/embedded-infra-lib/issues/561)) ([0ed606b](https://github.com/embedded-pro/embedded-infra-lib/commit/0ed606bb6fdb925e1511314d4f3b25ab19632a18)) +* HttpClientBasic reporting error for reestablished connections ([#473](https://github.com/embedded-pro/embedded-infra-lib/issues/473)) ([0619299](https://github.com/embedded-pro/embedded-infra-lib/commit/0619299fb6330cd7cee92ac952fad229317f64f3)) +* Incorrect handling of float numbers in json ([#478](https://github.com/embedded-pro/embedded-infra-lib/issues/478)) ([c8ee456](https://github.com/embedded-pro/embedded-infra-lib/commit/c8ee456e6936a76a1e7cc3ab18198b7def9d2834)) +* Infra/util/Endian: fix comparison against C++ version ([#486](https://github.com/embedded-pro/embedded-infra-lib/issues/486)) ([4fe74e5](https://github.com/embedded-pro/embedded-infra-lib/commit/4fe74e5751c90eca2786d263cbf6bca1520a4aba)) +* Line termination mismatch in hex files ([#307](https://github.com/embedded-pro/embedded-infra-lib/issues/307)) ([47482c3](https://github.com/embedded-pro/embedded-infra-lib/commit/47482c3b02e76d13437413cfb802e317439a4300)) +* Networking on linux ([#594](https://github.com/embedded-pro/embedded-infra-lib/issues/594)) ([972ff81](https://github.com/embedded-pro/embedded-infra-lib/commit/972ff816320440f3ee837d14c50b8c8aa6a516d6)) +* Null json value ([#470](https://github.com/embedded-pro/embedded-infra-lib/issues/470)) ([e72d48f](https://github.com/embedded-pro/embedded-infra-lib/commit/e72d48fd105cd8b9fd2cfe5d780a91e4591f89bd)) +* Osx socket implementation ([#232](https://github.com/embedded-pro/embedded-infra-lib/issues/232)) ([e127311](https://github.com/embedded-pro/embedded-infra-lib/commit/e127311db5a33ab7110285794e2e728e3a3d4ed3)) +* Pad 0xff when add hex and elf to upgrade pack ([#646](https://github.com/embedded-pro/embedded-infra-lib/issues/646)) ([5c5d318](https://github.com/embedded-pro/embedded-infra-lib/commit/5c5d3186c45e3463d57535a1d07cf011da91f6dc)) +* Protobuf/echo/EchoInstantiation: fix compilation errors ([#267](https://github.com/embedded-pro/embedded-infra-lib/issues/267)) ([9b53dc1](https://github.com/embedded-pro/embedded-infra-lib/commit/9b53dc1f77f944ce17d060a7d14fb5087f035677)) +* Remove \r from end of line of certificates ([#510](https://github.com/embedded-pro/embedded-infra-lib/issues/510)) ([7f581d8](https://github.com/embedded-pro/embedded-infra-lib/commit/7f581d87f7eab9d0b4635c25886d9b100cac22a3)) +* Remove echo dependency from network instantiations ([#63](https://github.com/embedded-pro/embedded-infra-lib/issues/63)) ([74c4ff1](https://github.com/embedded-pro/embedded-infra-lib/commit/74c4ff1b94c34c32af963ff141176b1d207e893d)) +* Remove superfluous > from cmake/emil_xsltproc.cmake ([#276](https://github.com/embedded-pro/embedded-infra-lib/issues/276)) ([be139b2](https://github.com/embedded-pro/embedded-infra-lib/commit/be139b22aff7dd5998eba2d7c409302598f988fb)) +* Remove virtual destructors reducing binary size ([#502](https://github.com/embedded-pro/embedded-infra-lib/issues/502)) ([fc69a3c](https://github.com/embedded-pro/embedded-infra-lib/commit/fc69a3c85b2a89018d4c9503378737a967912b31)) +* Repeated proto message incorrect maxMessageSize calculation ([#617](https://github.com/embedded-pro/embedded-infra-lib/issues/617)) ([2d28a51](https://github.com/embedded-pro/embedded-infra-lib/commit/2d28a51a94ab9f41bd776f16db47ed3ad8335e2c)) +* ServiceForwarder with LimitedStreamReader ends up in infinite loop ([#524](https://github.com/embedded-pro/embedded-infra-lib/issues/524)) ([9e7f949](https://github.com/embedded-pro/embedded-infra-lib/commit/9e7f949e96493a2dd4240995b535b3c23d455e51)) +* Services.echo_console: parsing tokens of nested messages and arrays, formatting of messages, and properly close upon losing connection ([#712](https://github.com/embedded-pro/embedded-infra-lib/issues/712)) ([4a69845](https://github.com/embedded-pro/embedded-infra-lib/commit/4a69845e0b2ffa44a96b80a792db5a9b44e98742)) +* Services/network/ConnectionMbedTls: Hostname() may not be invoked after ConnectionEstablished() ([#609](https://github.com/embedded-pro/embedded-infra-lib/issues/609)) ([fcc469a](https://github.com/embedded-pro/embedded-infra-lib/commit/fcc469aa899cac1fd712016cf8a0c05a89e27637)) +* Services/network/WebSocketClientConnectionObserver: Don't close websocket connection after 1 minute ([#578](https://github.com/embedded-pro/embedded-infra-lib/issues/578)) ([d2e0c05](https://github.com/embedded-pro/embedded-infra-lib/commit/d2e0c05d916aeeb88551e42306161ce372bf1aa1)) +* Tcp packet fragmentation ([#700](https://github.com/embedded-pro/embedded-infra-lib/issues/700)) ([c419e54](https://github.com/embedded-pro/embedded-infra-lib/commit/c419e5473bdb46fa90bd7282614435f5ab511a10)) +* Timer jumped shall trigger next trigger time update ([9bbfb53](https://github.com/embedded-pro/embedded-infra-lib/commit/9bbfb535061a56e76cf9e1aa037269030efff144)) +* Timer jumped will trigger next trigger time update ([#590](https://github.com/embedded-pro/embedded-infra-lib/issues/590)) ([9bbfb53](https://github.com/embedded-pro/embedded-infra-lib/commit/9bbfb535061a56e76cf9e1aa037269030efff144)) +* Timer limited repeat ([#659](https://github.com/embedded-pro/embedded-infra-lib/issues/659)) ([4f2a49e](https://github.com/embedded-pro/embedded-infra-lib/commit/4f2a49ee501f358965bdb54737f666cf1bafb407)) +* Trace outgoing echo calls ([#710](https://github.com/embedded-pro/embedded-infra-lib/issues/710)) ([279bb62](https://github.com/embedded-pro/embedded-infra-lib/commit/279bb6295d1d1c0d7fa9849e6a7ca04805ab84b0)) +* UartUnix receiveData callback being called after destruction ([#677](https://github.com/embedded-pro/embedded-infra-lib/issues/677)) ([65f164b](https://github.com/embedded-pro/embedded-infra-lib/commit/65f164b480720379607497f61ad276f35d0474c2)) +* UpgradePackBuilderFacade setting mbedtls global memory pool on stack ([#324](https://github.com/embedded-pro/embedded-infra-lib/issues/324)) ([ec567d5](https://github.com/embedded-pro/embedded-infra-lib/commit/ec567d511f40eb3c0962ac4b6ac3479f64c0a871)) +* UpgradePackBuilderFacade setting mbedtls global memory pool on stack, causing a crash when combined with ConnectionMbedTls ([ec567d5](https://github.com/embedded-pro/embedded-infra-lib/commit/ec567d511f40eb3c0962ac4b6ac3479f64c0a871)) +* Usable memory loss in HttpClientBasic::Path ([#304](https://github.com/embedded-pro/embedded-infra-lib/issues/304)) ([d5d4abf](https://github.com/embedded-pro/embedded-infra-lib/commit/d5d4abf32050cf92bf7c55c5eb227007d04d88e3)) +* Various fixes for echo ([#462](https://github.com/embedded-pro/embedded-infra-lib/issues/462)) ([0062598](https://github.com/embedded-pro/embedded-infra-lib/commit/006259893b8bd57b7c0796977cd96fc4bfbcc626)) + ## [7.2.0](https://github.com/philips-software/amp-embedded-infra-lib/compare/v7.1.0...v7.2.0) (2025-04-28) @@ -380,4 +515,4 @@ The format is based on [Keep a Changelog](http://keepachangelog.com/en/1.0.0/) ## [1.2.0] -- Initial open source version of amp-embedded-infra-lib +- Initial open source version of amp-embedded-infra-lib diff --git a/CMakeLists.txt b/CMakeLists.txt index fae11e7cc..e7db8ec5c 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,222 +1,222 @@ -cmake_minimum_required(VERSION 3.24) -list(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_LIST_DIR}/cmake") -list(APPEND CMAKE_PREFIX_PATH "${CMAKE_INSTALL_PREFIX}") - -if (APPLE) - set(CMAKE_OSX_ARCHITECTURES "arm64;x86_64" CACHE STRING "OS X target architectures") - set(CMAKE_OSX_DEPLOYMENT_TARGET "10.15" CACHE STRING "Minimum OS X deployment version") -endif() - -project(emil LANGUAGES C CXX VERSION 7.2.0) # x-release-please-version - -set(CMAKE_CXX_STANDARD 20) -set(CMAKE_CXX_STANDARD_REQUIRED On) - -set_directory_properties(PROPERTY USE_FOLDERS On) - -include(CMakePackageConfigHelpers) -include(emil_coverage) -include(emil_build_for) -include(emil_folderize) -include(emil_clang_tools) -include(emil_docker_tools) -include(emil_generate_artifacts) -include(emil_test_helpers) -include(emil_version_generator) -include(emil_xsltproc) -include(FetchContent) -include(GNUInstallDirs) # included to supply proper defaults to install(...) commands - -if (CMAKE_SOURCE_DIR STREQUAL CMAKE_CURRENT_SOURCE_DIR) - set(EMIL_STANDALONE On) -endif() - -if (MINGW) - # When compiling with MINGW, dynamically linking to the standard C++ library results in linking to libstdc++-6.dll. - # The libstdc++-6.dll found during runtime is often different than the one with which the application is compiled with, - # so instead of linking dynamically, we statically link to the standard C++ library. - add_link_options("-static-libstdc++") -endif() - -if (CMAKE_SYSTEM_NAME STREQUAL "Windows") - set(EMIL_BUILD_WIN On) - set(EMIL_HOST_BUILD On) - - add_compile_options($<$:/EHsc>) -endif() - -if (CMAKE_SYSTEM_NAME STREQUAL "Linux") - set(EMIL_BUILD_UNIX On) - set(EMIL_HOST_BUILD On) -endif() - -if (CMAKE_SYSTEM_NAME STREQUAL "Darwin") - set(EMIL_BUILD_DARWIN On) - set(EMIL_HOST_BUILD On) - - # Suppress warnings about *.a files having no symbols on Darwin. - # The warning is emitted when *.cpp.o contains no operational code. - set(CMAKE_C_ARCHIVE_CREATE " Scr ") - set(CMAKE_CXX_ARCHIVE_CREATE " Scr ") - set(CMAKE_C_ARCHIVE_FINISH " -no_warning_for_no_symbols -c ") - set(CMAKE_CXX_ARCHIVE_FINISH " -no_warning_for_no_symbols -c ") -endif() - -if (CMAKE_SYSTEM_NAME STREQUAL "Generic") - enable_language(ASM) -endif() - -# When building EmIL by itself the examples and tests will be built -# by-default. When consuming EmIL as a dependency the tests and -# examples are disabled. This behavior can be overridden by below -# options. -if (EMIL_STANDALONE AND EMIL_HOST_BUILD) - set(EMIL_DEFAULTOPT On) - set(EMIL_DEFAULTOPT_INVERTED Off) -else() - set(EMIL_DEFAULTOPT Off) - set(EMIL_DEFAULTOPT_INVERTED On) -endif() - -# When building EmIL by itself do not exclude any targets from all -# Libraries will only be excluded from all when EmIL is a consumed as a dependency. -if (EMIL_STANDALONE) - set(EMIL_EXCLUDE_FROM_ALL "") -else() - set(EMIL_EXCLUDE_FROM_ALL "EXCLUDE_FROM_ALL") -endif() - -option(EMIL_BUILD_TESTS "Enable building the tests" ${EMIL_DEFAULTOPT}) -option(EMIL_BUILD_EXAMPLES "Enable building the examples" ${EMIL_DEFAULTOPT}) -option(EMIL_ENABLE_DOCKER_TOOLS "Enable shift-left tools (e.g. linters, formatters) that are run using Docker" On) -option(EMIL_GENERATE_PACKAGE_CONFIG "Enable generation of package configuration and install files" ${EMIL_HOST_BUILD}) -option(EMIL_ENABLE_TRACING "Enable Tracing" On) -option(EMIL_BUILD_ECHO_COMPILERS "Build and install the Protobuf ECHO compilers" ${EMIL_DEFAULTOPT}) - -# Enable or disable optional features. -option(EMIL_INCLUDE_ECHO "Include support for ECHO" On) -option(EMIL_INCLUDE_MBEDTLS "Include MbedTLS as part of EmIL" On) -set(EMIL_EXTERNAL_MBEDTLS_TARGET "" CACHE STRING "Specify an external MbedTLS target") -option(EMIL_INCLUDE_FREERTOS "Include FreeRTOS as part of EmIL" Off) -option(EMIL_INCLUDE_THREADX "Include ThreadX as part of EmIL (Incomplete, experimental)" Off) -option(EMIL_INCLUDE_SEGGER_RTT "Include support for Segger RTT" Off) -option(EMIL_INCLUDE_LWIP "Include LwIP TCP/IP stack" On) -set(EMIL_EXTERNAL_LWIP_TARGET "" CACHE STRING "Specify an external LWIP target") - -if (EMIL_ENABLE_DOCKER_TOOLS) - emil_enable_docker_tools() -endif() - -if (EMIL_HOST_BUILD) - add_compile_definitions(EMIL_HOST_BUILD) - - if (EMIL_BUILD_TESTS) - include(CTest) - emil_enable_testing() - endif() - -endif() - -if (EMIL_BUILD_QEMU) - set(gtest_disable_pthreads On CACHE BOOL "" FORCE) - set(BUILD_TESTING OFF CACHE BOOL "" FORCE) - enable_testing() - emil_enable_testing() -endif() - -if (NOT EMIL_STANDALONE) - set(EMIL_HOST_BUILD "${EMIL_HOST_BUILD}" PARENT_SCOPE) - set(EMIL_BUILD_WIN "${EMIL_BUILD_WIN}" PARENT_SCOPE) - set(EMIL_BUILD_UNIX "${EMIL_BUILD_UNIX}" PARENT_SCOPE) - set(EMIL_BUILD_DARWIN "${EMIL_BUILD_DARWIN}" PARENT_SCOPE) -endif() - -if (CMAKE_CXX_COMPILER_ID STREQUAL "GNU") - # Suppress warnings about parameter passing for argument of type '...' changed in GCC 7.1 - add_compile_options($<$:-Wno-psabi>) - add_compile_options($<$:-Wno-psabi>) -endif() - -add_version_header_target(generated.version_header) - -add_subdirectory(external) -add_subdirectory(infra) -add_subdirectory(hal) -add_subdirectory(drivers) -if (EMIL_INCLUDE_ECHO) - add_subdirectory(services/echo_attributes) - add_subdirectory(services/echo_core) - if (EMIL_BUILD_ECHO_COMPILERS) - add_subdirectory(application/protoc_echo_plugin) - add_subdirectory(application/protoc_echo_plugin_csharp) - add_subdirectory(application/protoc_echo_plugin_java) - endif() -endif() -add_subdirectory(services) -if (EMIL_INCLUDE_ECHO) - add_subdirectory(upgrade) -endif() - -if (EMIL_INCLUDE_ECHO AND EMIL_BUILD_ECHO_COMPILERS) - add_subdirectory(application/echo_console) - add_subdirectory(application/sesame_key_generator) - add_subdirectory(application/security_key_generator) -endif() -if (EMIL_BUILD_EXAMPLES) - add_subdirectory(examples) -endif() - -emil_clangformat_directories(emil DIRECTORIES .) - -if (EMIL_STANDALONE) - emil_coverage_targets(DIRECTORIES .) - emil_folderize_all_targets() -endif() - -if (EMIL_BUILD_ECHO_COMPILERS AND NOT CMAKE_CROSSCOMPILING) - function(generate_export_targets name) - install(EXPORT emil${name}Targets - FILE emil${name}Targets.cmake - DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/emil - ) - endfunction() - - foreach(target IN ITEMS Application) - generate_export_targets(${target}) - endforeach() - - write_basic_package_version_file( - "${CMAKE_CURRENT_BINARY_DIR}/cmake/${PROJECT_NAME}ConfigVersion.cmake" - COMPATIBILITY SameMajorVersion - # When cross-compiling for a 32-bit architecture and re-using host tooling from a 64-bit architecture - # ARCH_INDEPENDENT is necessary here. See: https://cmake.org/cmake/help/latest/module/CMakePackageConfigHelpers.html. - ARCH_INDEPENDENT - ) - - configure_package_config_file(${CMAKE_CURRENT_SOURCE_DIR}/cmake/Config.cmake.in - "${CMAKE_CURRENT_BINARY_DIR}/cmake/${PROJECT_NAME}Config.cmake" - INSTALL_DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/${PROJECT_NAME} - ) - - install(FILES - "${CMAKE_CURRENT_BINARY_DIR}/cmake/${PROJECT_NAME}Config.cmake" - "${CMAKE_CURRENT_BINARY_DIR}/cmake/${PROJECT_NAME}ConfigVersion.cmake" - DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/${PROJECT_NAME} - ) - -endif() - -set(CPACK_GENERATOR "ZIP;TGZ") -set(CPACK_SOURCE_IGNORE_FILES ".vs/;.git/;build/") -set(CPACK_PACKAGE_NAME "${PROJECT_NAME}") -set(CPACK_PACKAGE_VERSION "${PROJECT_VERSION}") -set(CPACK_PACKAGE_DESCRIPTION "${PROJECT_DESCRIPTION}") -set(CPACK_DEBIAN_PACKAGE_NAME "${CPACK_PACKAGE_NAME}") -set(CPACK_RPM_PACKAGE_NAME "${CPACK_PACKAGE_NAME}") -set(CPACK_PACKAGE_HOMEPAGE_URL "${PROJECT_HOMEPAGE_URL}") -set(CPACK_PACKAGE_MAINTAINER "${CPACK_PACKAGE_VENDOR}") -set(CPACK_DEBIAN_PACKAGE_MAINTAINER "${CPACK_PACKAGE_VENDOR}") -set(CPACK_RESOURCE_FILE_LICENSE "${CMAKE_CURRENT_SOURCE_DIR}/LICENSE") -set(CPACK_RESOURCE_FILE_README "${CMAKE_CURRENT_SOURCE_DIR}/README.md") - -include(CPack) +cmake_minimum_required(VERSION 3.24) +list(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_LIST_DIR}/cmake") +list(APPEND CMAKE_PREFIX_PATH "${CMAKE_INSTALL_PREFIX}") + +if (APPLE) + set(CMAKE_OSX_ARCHITECTURES "arm64;x86_64" CACHE STRING "OS X target architectures") + set(CMAKE_OSX_DEPLOYMENT_TARGET "10.15" CACHE STRING "Minimum OS X deployment version") +endif() + +project(emil LANGUAGES C CXX VERSION 8.0.0) # x-release-please-version + +set(CMAKE_CXX_STANDARD 20) +set(CMAKE_CXX_STANDARD_REQUIRED On) + +set_directory_properties(PROPERTY USE_FOLDERS On) + +include(CMakePackageConfigHelpers) +include(emil_coverage) +include(emil_build_for) +include(emil_folderize) +include(emil_clang_tools) +include(emil_docker_tools) +include(emil_generate_artifacts) +include(emil_test_helpers) +include(emil_version_generator) +include(emil_xsltproc) +include(FetchContent) +include(GNUInstallDirs) # included to supply proper defaults to install(...) commands + +if (CMAKE_SOURCE_DIR STREQUAL CMAKE_CURRENT_SOURCE_DIR) + set(EMIL_STANDALONE On) +endif() + +if (MINGW) + # When compiling with MINGW, dynamically linking to the standard C++ library results in linking to libstdc++-6.dll. + # The libstdc++-6.dll found during runtime is often different than the one with which the application is compiled with, + # so instead of linking dynamically, we statically link to the standard C++ library. + add_link_options("-static-libstdc++") +endif() + +if (CMAKE_SYSTEM_NAME STREQUAL "Windows") + set(EMIL_BUILD_WIN On) + set(EMIL_HOST_BUILD On) + + add_compile_options($<$:/EHsc>) +endif() + +if (CMAKE_SYSTEM_NAME STREQUAL "Linux") + set(EMIL_BUILD_UNIX On) + set(EMIL_HOST_BUILD On) +endif() + +if (CMAKE_SYSTEM_NAME STREQUAL "Darwin") + set(EMIL_BUILD_DARWIN On) + set(EMIL_HOST_BUILD On) + + # Suppress warnings about *.a files having no symbols on Darwin. + # The warning is emitted when *.cpp.o contains no operational code. + set(CMAKE_C_ARCHIVE_CREATE " Scr ") + set(CMAKE_CXX_ARCHIVE_CREATE " Scr ") + set(CMAKE_C_ARCHIVE_FINISH " -no_warning_for_no_symbols -c ") + set(CMAKE_CXX_ARCHIVE_FINISH " -no_warning_for_no_symbols -c ") +endif() + +if (CMAKE_SYSTEM_NAME STREQUAL "Generic") + enable_language(ASM) +endif() + +# When building EmIL by itself the examples and tests will be built +# by-default. When consuming EmIL as a dependency the tests and +# examples are disabled. This behavior can be overridden by below +# options. +if (EMIL_STANDALONE AND EMIL_HOST_BUILD) + set(EMIL_DEFAULTOPT On) + set(EMIL_DEFAULTOPT_INVERTED Off) +else() + set(EMIL_DEFAULTOPT Off) + set(EMIL_DEFAULTOPT_INVERTED On) +endif() + +# When building EmIL by itself do not exclude any targets from all +# Libraries will only be excluded from all when EmIL is a consumed as a dependency. +if (EMIL_STANDALONE) + set(EMIL_EXCLUDE_FROM_ALL "") +else() + set(EMIL_EXCLUDE_FROM_ALL "EXCLUDE_FROM_ALL") +endif() + +option(EMIL_BUILD_TESTS "Enable building the tests" ${EMIL_DEFAULTOPT}) +option(EMIL_BUILD_EXAMPLES "Enable building the examples" ${EMIL_DEFAULTOPT}) +option(EMIL_ENABLE_DOCKER_TOOLS "Enable shift-left tools (e.g. linters, formatters) that are run using Docker" On) +option(EMIL_GENERATE_PACKAGE_CONFIG "Enable generation of package configuration and install files" ${EMIL_HOST_BUILD}) +option(EMIL_ENABLE_TRACING "Enable Tracing" On) +option(EMIL_BUILD_ECHO_COMPILERS "Build and install the Protobuf ECHO compilers" ${EMIL_DEFAULTOPT}) + +# Enable or disable optional features. +option(EMIL_INCLUDE_ECHO "Include support for ECHO" On) +option(EMIL_INCLUDE_MBEDTLS "Include MbedTLS as part of EmIL" On) +set(EMIL_EXTERNAL_MBEDTLS_TARGET "" CACHE STRING "Specify an external MbedTLS target") +option(EMIL_INCLUDE_FREERTOS "Include FreeRTOS as part of EmIL" Off) +option(EMIL_INCLUDE_THREADX "Include ThreadX as part of EmIL (Incomplete, experimental)" Off) +option(EMIL_INCLUDE_SEGGER_RTT "Include support for Segger RTT" Off) +option(EMIL_INCLUDE_LWIP "Include LwIP TCP/IP stack" On) +set(EMIL_EXTERNAL_LWIP_TARGET "" CACHE STRING "Specify an external LWIP target") + +if (EMIL_ENABLE_DOCKER_TOOLS) + emil_enable_docker_tools() +endif() + +if (EMIL_HOST_BUILD) + add_compile_definitions(EMIL_HOST_BUILD) + + if (EMIL_BUILD_TESTS) + include(CTest) + emil_enable_testing() + endif() + +endif() + +if (EMIL_BUILD_QEMU) + set(gtest_disable_pthreads On CACHE BOOL "" FORCE) + set(BUILD_TESTING OFF CACHE BOOL "" FORCE) + enable_testing() + emil_enable_testing() +endif() + +if (NOT EMIL_STANDALONE) + set(EMIL_HOST_BUILD "${EMIL_HOST_BUILD}" PARENT_SCOPE) + set(EMIL_BUILD_WIN "${EMIL_BUILD_WIN}" PARENT_SCOPE) + set(EMIL_BUILD_UNIX "${EMIL_BUILD_UNIX}" PARENT_SCOPE) + set(EMIL_BUILD_DARWIN "${EMIL_BUILD_DARWIN}" PARENT_SCOPE) +endif() + +if (CMAKE_CXX_COMPILER_ID STREQUAL "GNU") + # Suppress warnings about parameter passing for argument of type '...' changed in GCC 7.1 + add_compile_options($<$:-Wno-psabi>) + add_compile_options($<$:-Wno-psabi>) +endif() + +add_version_header_target(generated.version_header) + +add_subdirectory(external) +add_subdirectory(infra) +add_subdirectory(hal) +add_subdirectory(drivers) +if (EMIL_INCLUDE_ECHO) + add_subdirectory(services/echo_attributes) + add_subdirectory(services/echo_core) + if (EMIL_BUILD_ECHO_COMPILERS) + add_subdirectory(application/protoc_echo_plugin) + add_subdirectory(application/protoc_echo_plugin_csharp) + add_subdirectory(application/protoc_echo_plugin_java) + endif() +endif() +add_subdirectory(services) +if (EMIL_INCLUDE_ECHO) + add_subdirectory(upgrade) +endif() + +if (EMIL_INCLUDE_ECHO AND EMIL_BUILD_ECHO_COMPILERS) + add_subdirectory(application/echo_console) + add_subdirectory(application/sesame_key_generator) + add_subdirectory(application/security_key_generator) +endif() +if (EMIL_BUILD_EXAMPLES) + add_subdirectory(examples) +endif() + +emil_clangformat_directories(emil DIRECTORIES .) + +if (EMIL_STANDALONE) + emil_coverage_targets(DIRECTORIES .) + emil_folderize_all_targets() +endif() + +if (EMIL_BUILD_ECHO_COMPILERS AND NOT CMAKE_CROSSCOMPILING) + function(generate_export_targets name) + install(EXPORT emil${name}Targets + FILE emil${name}Targets.cmake + DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/emil + ) + endfunction() + + foreach(target IN ITEMS Application) + generate_export_targets(${target}) + endforeach() + + write_basic_package_version_file( + "${CMAKE_CURRENT_BINARY_DIR}/cmake/${PROJECT_NAME}ConfigVersion.cmake" + COMPATIBILITY SameMajorVersion + # When cross-compiling for a 32-bit architecture and re-using host tooling from a 64-bit architecture + # ARCH_INDEPENDENT is necessary here. See: https://cmake.org/cmake/help/latest/module/CMakePackageConfigHelpers.html. + ARCH_INDEPENDENT + ) + + configure_package_config_file(${CMAKE_CURRENT_SOURCE_DIR}/cmake/Config.cmake.in + "${CMAKE_CURRENT_BINARY_DIR}/cmake/${PROJECT_NAME}Config.cmake" + INSTALL_DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/${PROJECT_NAME} + ) + + install(FILES + "${CMAKE_CURRENT_BINARY_DIR}/cmake/${PROJECT_NAME}Config.cmake" + "${CMAKE_CURRENT_BINARY_DIR}/cmake/${PROJECT_NAME}ConfigVersion.cmake" + DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/${PROJECT_NAME} + ) + +endif() + +set(CPACK_GENERATOR "ZIP;TGZ") +set(CPACK_SOURCE_IGNORE_FILES ".vs/;.git/;build/") +set(CPACK_PACKAGE_NAME "${PROJECT_NAME}") +set(CPACK_PACKAGE_VERSION "${PROJECT_VERSION}") +set(CPACK_PACKAGE_DESCRIPTION "${PROJECT_DESCRIPTION}") +set(CPACK_DEBIAN_PACKAGE_NAME "${CPACK_PACKAGE_NAME}") +set(CPACK_RPM_PACKAGE_NAME "${CPACK_PACKAGE_NAME}") +set(CPACK_PACKAGE_HOMEPAGE_URL "${PROJECT_HOMEPAGE_URL}") +set(CPACK_PACKAGE_MAINTAINER "${CPACK_PACKAGE_VENDOR}") +set(CPACK_DEBIAN_PACKAGE_MAINTAINER "${CPACK_PACKAGE_VENDOR}") +set(CPACK_RESOURCE_FILE_LICENSE "${CMAKE_CURRENT_SOURCE_DIR}/LICENSE") +set(CPACK_RESOURCE_FILE_README "${CMAKE_CURRENT_SOURCE_DIR}/README.md") + +include(CPack) diff --git a/sonar-project.properties b/sonar-project.properties index b856f63e6..4b5600bb0 100644 --- a/sonar-project.properties +++ b/sonar-project.properties @@ -3,7 +3,7 @@ sonar.organization=embedded-pro sonar.projectName=embeddedinfralib # x-release-please-start-version -sonar.projectVersion=7.2.0 +sonar.projectVersion=8.0.0 # x-release-please-end sonar.links.homepage=https://github.com/embedded-pro/embedded-infra-lib