<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/REC-html40/loose.dtd">
<html lang="en" style='--code-editor-font: var(--default-mono-font, "GitLab Mono"), JetBrains Mono, Menlo, DejaVu Sans Mono, Liberation Mono, Consolas, Ubuntu Mono, Courier New, andale mono, lucida console, monospace;'>
<head>
<meta content="text/html; charset=utf-8" http-equiv="Content-Type">
<title>
GitLab
</title>

<style data-premailer="ignore" type="text/css">
a { color: #1068bf; }
</style>

<style>img {
max-width: 100%; height: auto;
}
body {
font-size: .875rem;
}
body {
-webkit-text-shadow: rgba(255,255,255,.01) 0 0 1px;
}
body {
font-family: "GitLab Sans",-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Noto Sans",Ubuntu,Cantarell,"Helvetica Neue",sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji"; font-size: inherit;
}
</style>
</head>
<body style='font-size: inherit; -webkit-text-shadow: rgba(255,255,255,.01) 0 0 1px; font-family: "GitLab Sans",-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Noto Sans",Ubuntu,Cantarell,"Helvetica Neue",sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji";'>
<div class="content">

<p style="color: #777777;">
<a href="https://gitlab.rtems.org/amar">Amar Takhar</a>
commented on a
<a href="https://gitlab.rtems.org/rtems/rtos/rtems/-/merge_requests/640#note_128152">discussion</a>:
</p>
<div class="md" style="position: relative; z-index: 1; color: #3a383f; word-wrap: break-word;">
<p dir="auto" style="color: #3a383f; margin: 0 0 1rem;" align="initial"><strong style="font-weight: 600; margin-top: 0;">FYI if any headers weren't installed in the same place that's a bug there should be no user-facing changes at all.</strong></p>
<p dir="auto" style="color: #3a383f; margin: 0 0 1rem;" align="initial">The change I was making -- and wasn't finished yet is to:</p>
<ul dir="auto" style="text-align: initial; list-style-type: disc; margin: 0 0 1rem; padding: 0;">
<li style="margin-top: 0; line-height: 1.6em; margin-left: 25px; padding-left: 3px;">Isolate 3rd party builds to individual libraries (not done yet but some are already built this way)</li>
<li style="line-height: 1.6em; margin-left: 25px; padding-left: 3px;">Create a 3rd library that builds rtems source that uses the 3rd patty library with the right includes</li>
</ul>
<p dir="auto" style="color: #3a383f; margin: 0 0 1rem;" align="initial">Note: This is waf no libraries are created they can stay as <code style='font-size: 90%; color: #18171d; word-wrap: break-word; border-radius: .25rem; background-color: #ececef; margin-top: 0; font-weight: inherit; white-space: break-spaces; word-break: break-all; font-family: "GitLab Mono", "JetBrains Mono", "Menlo", "DejaVu Sans Mono", "Liberation Mono", "Consolas", "Ubuntu Mono", "Courier New", "andale mono", "lucida console", monospace; font-variant-ligatures: none; overflow-wrap: break-word; padding: 0.125rem 0.25rem;'>.o</code> objects this just handles build flags.</p>
<p dir="auto" style="color: #3a383f; margin: 0 0 1rem;" align="initial">This avoids having a flat "namespace' for includes.  Chris made the argument that on operating systems these go into a general <code style='font-size: 90%; color: #18171d; word-wrap: break-word; border-radius: .25rem; background-color: #ececef; margin-top: 0; font-weight: inherit; white-space: break-spaces; word-break: break-all; font-family: "GitLab Mono", "JetBrains Mono", "Menlo", "DejaVu Sans Mono", "Liberation Mono", "Consolas", "Ubuntu Mono", "Courier New", "andale mono", "lucida console", monospace; font-variant-ligatures: none; overflow-wrap: break-word; padding: 0.125rem 0.25rem;'>include/</code> directory but this is about building the operating system <em>not</em> what happens when it's "installed" and in use by a user writing their application.  OSes themselves are built in isolation -- yes I know Linux does not do this or kind of goes in a roundabout way to attempt it but most headers are installed in <code style='font-size: 90%; color: #18171d; word-wrap: break-word; border-radius: .25rem; background-color: #ececef; font-weight: inherit; white-space: break-spaces; word-break: break-all; font-family: "GitLab Mono", "JetBrains Mono", "Menlo", "DejaVu Sans Mono", "Liberation Mono", "Consolas", "Ubuntu Mono", "Courier New", "andale mono", "lucida console", monospace; font-variant-ligatures: none; overflow-wrap: break-word; padding: 0.125rem 0.25rem;'>/usr/include/</code> .. I don't use Linux so this argument falls flat on me there are reasons I don't use it this is actually one of them.  CI builds are done in a chroot environment on Linux to avoid this it's annoying but necessary.</p>
<p dir="auto" style="color: #3a383f; margin: 0 0 1rem;" align="initial">The future is to use those built objects and link in the 3rd party test suites for testing.  Most of them have their own test suites that should at least in part run under RTEMS so we can ensure the upstream tests work to verify that everything is OK.  We currently do not do this and if we do it's not across the board.</p>
<p dir="auto" style="color: #3a383f; margin: 0 0 1rem;" align="initial">There's no reason for every C source file built to have access to every header when building RTEMS.  Doing it this way makes it more deliberate and lets us know which files are using which 3rd party APIs and frankly we should be doing this internally, too.</p>
<p dir="auto" style="color: #3a383f; margin: 0;" align="initial">This is not a huge change as far as development goes.  If you need access to a header that's not generally available it's a one or two line change in the build that to me is not a big deal for the clean builds we can ensure in the future.  I do understand there may not be buy in for this and there will be a lot of "what's the point" but what's wrong with ensuring that unused APIs aren't exposed when they are not being used?  Especially for 3rd party code and that's all I'm attempting here at the moment.</p>
</div>


</div>
<div class="footer" style="margin-top: 10px;">
<p style="font-size: small; color: #626168;">

<br>
<a href="https://gitlab.rtems.org/rtems/rtos/rtems/-/merge_requests/640#note_128152">View it on GitLab</a>.
<br>
You're receiving this email because of your account on <a target="_blank" rel="noopener noreferrer" href="https://gitlab.rtems.org">gitlab.rtems.org</a>. <a href="https://gitlab.rtems.org/-/sent_notifications/7cf0c4e8ee4c72cfd2050182fb6a40d3/unsubscribe" target="_blank" rel="noopener noreferrer">Unsubscribe</a> from this thread · <a href="https://gitlab.rtems.org/-/profile/notifications" target="_blank" rel="noopener noreferrer" class="mng-notif-link">Manage all notifications</a> · <a href="https://gitlab.rtems.org/help" target="_blank" rel="noopener noreferrer" class="help-link">Help</a>
<span style="color: transparent; font-size: 0; display: none; overflow: hidden; opacity: 0; width: 0; height: 0; max-width: 0; max-height: 0;">
Notification message regarding https://gitlab.rtems.org/rtems/rtos/rtems/-/merge_requests/640#note_128152 at 1754150042
</span>
<script type="application/ld+json">{"@context":"http://schema.org","@type":"EmailMessage","action":{"@type":"ViewAction","name":"View Merge request","url":"https://gitlab.rtems.org/rtems/rtos/rtems/-/merge_requests/640#note_128152"}}</script>


</p>
</div>
</body>
</html>