On Friday, 20 December 2013 at 20:18:43 UTC, Timo Sintonen wrote:
Object.d seems to be a special case in many ways.
When building minlibd I was not able to have an empty or my
own object.d and it had to be named object_.d
I do not remember any more what all the problems were.
Object.d (or .di) is always imported even if it is not
mentioned. In this case gdc may find another object.d from the
standard library. Current directory is not searched unless you
put -I. to the command line. There may now be two conflicting
files.
Actually, the situation may also be the opposite:
object.d is found in the current directory and imported twice,
but the current directory is not in the include search path and
so the file is not accepted as a valid library file.
Thanks Timo,
You're right: object.d and/or object.di are imported
automatically from the current directory with or without the -I.
option. Therefore, removing object.d from my compile line got
rid of the duplicate messages, but one instance still remains.
Here's my new compile line:
arm-none-eabi-gdc -I. -march=armv7e-m -mcpu=cortex-m4
-mtune=cortex-m4 -mthumb -fno-emit-moduleinfo -c
-ffunction-sections -fno-exceptions -fdata-sections start.d
notice I've removed object.d, but the file still exists in the
same folder as start.d
I tried:
1) adding the -I. to the compile line to make my object.d
*official*
2) moving my object.d to my default include folder
3) renaming object.d to object.di and repeating 1. and 2.
4) renaming object.d to object_.d and repeating 1. and 2.
All of these still produce the same error messages. The
interesting thing is I was able to compile my code with my build
from the *official* GDC 4.8 branch; but Johannes's arm-old
backport gives me the object.d errors. So, something must have
changed since the 4.8 branch.
If object.d is special, please let me know how its handled. Is
this actually a question for the DMD folks?
Thanks,
Mike