Skip to content

Conversation

@elupus
Copy link
Contributor

@elupus elupus commented Nov 4, 2025

Expose a osal-interface target that is of cmake INTERFACE type. This target only defines the osal API and allow delaying the choice of linking of final osal port implementation to the link stage of the binary. This allow the Osal implementation to be defined by the integrator of used libraries.

To accomplish this:

  • osal.h becomes static and common to all targets
  • osal_sys.h is changed to an internal implementation header for the osal port
  • Buld files are restructured to keep build configuration of a port in the port directory

By default an osal cmake alias is added to remain compatible with previous solutions.

@elupus elupus force-pushed the interface branch 4 times, most recently from 8d30800 to e2a49e5 Compare November 4, 2025 16:04
os_log is a global function pointer to allow
redirecting logging to other targets since a
while back. Freertos port should support this.
Not all ports set compile options on the files, so
we should support empty lists on all of these files.
Instead of making this choice compile time,
install all supported compiler headers by default.
Expose a osal-interface target that is of cmake INTERFACE type. This target only defines the osal API and allow delaying the choice of linking of final osal port implementation to the link stage of the binary. This allow the Osal implementation to be defined by the integrator of used libraries.

To accomplish this:
- osal.h becomes static and common to all targets
- osal_sys.h is changed to an internal implementation header for the osal port
- Buld files are restructured to keep build configuration of a port in the port directory

By default an osal cmake alias is added to remain compatible with previous solutions.
Copy link
Contributor

@hefloryd hefloryd left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Looks good, some minor comments

#if __has_feature(attribute_analyzer_noreturn)
#define CLANG_ANALYZER_NORETURN __attribute__ ((analyzer_noreturn))
#else
#define CLANG_ANALYZER_NORETURN
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Missing endif

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This file could probably be shared between gcc/clang using the previous checks for clang


target_compile_definitions(${_osal_sys}
PUBLIC
"OS_MAIN=int _main"
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Should OS_MAIN be hardcoded here?

#*******************************************************************/

# Get osal properties
get_target_property(OSAL_SOURCE_DIR osal SOURCE_DIR)
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

OSAL_SOURCE_DIR is also set by project(). Is this equivalent or if not, should a different name be used?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants