<html>
  <head>
    <meta content="text/html; charset=ISO-8859-1"
      http-equiv="Content-Type">
  </head>
  <body bgcolor="#FFFFFF" text="#000000">
    Hej everyone,<br>
    <br>
    interesting this comes up now, I actually have thought about this
    problem in December and was then surprised, that no problems with
    naming conflicts had occurred by then. I would like to suggest a
    third solution:<br>
    3.) encode a source files path into the object files name<br>
    for example: <br>
    core/thread.c --> BINDIR/core_thread.o<br>
    sys/uart0/uart0.c --> BINDIR/sys_uart0_uart0.o<br>
    PRJDIR/xy/aa/abc.c --> BINDIR/project_xy_aa_abc.o<br>
    <br>
    This way, no conventions for naming files would be needed anywhere,
    while naming space collitions should be impossible. And the solution
    would only affect some Makefiles, so the 'User'-developer would not
    even need to know much about it. What do you think?<br>
    <br>
    Cheers,<br>
    Hauke<br>
    <br>
    <br>
    <div class="moz-cite-prefix">On 10.01.2014 18:52, Oleg Hahm wrote:<br>
    </div>
    <blockquote cite="mid:20140110175244.GA12115@hobbykeller.org"
      type="cite">
      <pre wrap="">Dear rioters,

we've just come across a problem resulting from the recent change to
consolidate all binaries in one folder: if the project contains a file with
a name that already exists somewhere within in RIOT, the build system will at
some point create a second object file with the same name, overwriting the
first one.

Even worse, this problem already exists within RIOT: for example, there exist
two files called uart0.c (one in sys/uart0, the other in
boards/wsn430-common). This emerged probably during the consolidation of the
boards repository.

As I've stated already in the accompanying PR[1], I see two solutions:
1.) enforce naming conventions for files, so that all files are prefixed with
their module name (this could still lead to cases like the one Ludwig has
depicted, but are much more unlikely).
2.) revert the change to have all binaries in one folder, but having instead
something like 
 $(RIOTBASE)/bin/$(CPU)/ 
 $(PROJDIR)/bin/$(BOARD)/ 
Where the first directory contains all RIOT binaries and the second only
project specific binaries. While this solution also helps to reduce redundant
compilings, it still call for a consistent naming scheme - but only within RIOT
itself which is much more manageable.

However, I'd vote for the first solution for now, because it's simpler.

Anyone with a better solution?

Cheers,
Oleg

[1] <a class="moz-txt-link-freetext" href="https://github.com/RIOT-OS/RIOT/pull/494">https://github.com/RIOT-OS/RIOT/pull/494</a>
</pre>
      <br>
      <fieldset class="mimeAttachmentHeader"></fieldset>
      <br>
      <pre wrap="">_______________________________________________
devel mailing list
<a class="moz-txt-link-abbreviated" href="mailto:devel@riot-os.org">devel@riot-os.org</a>
<a class="moz-txt-link-freetext" href="http://lists.riot-os.org/mailman/listinfo/devel">http://lists.riot-os.org/mailman/listinfo/devel</a>
</pre>
    </blockquote>
    <br>
  </body>
</html>