https://issues.dlang.org/show_bug.cgi?id=12116
Andrei Alexandrescu <and...@erdani.com> changed: What |Removed |Added ---------------------------------------------------------------------------- CC| |and...@erdani.com --- Comment #4 from Andrei Alexandrescu <and...@erdani.com> --- (In reply to Timothee Cour from comment #3) > still completely broken: > > dmd --version > DMD64 D Compiler v2.073.0-devel-a2b772f > rdmd | grep build > rdmd build 20170107 > > fun.d: > void main(){} > > # with absolute path_to_file.d: > dmd -op -od/tmp/d01 /path/bug_12116/fun.d > creates ./fun and /path/bug_12116/fun.o (BUG: /tmp/d01 is ignored) > > dmd -c -op -od/tmp/d01 /path/bug_12116/fun.d > creates /path/bug_12116/fun.o (BUG: /tmp/d01 is ignored) > > rdmd -c -op -od/tmp/d01 /path/bug_12116/fun.d > creates /tmp/d01/fun.o (BUG: inconsistent with dmd) > > # with .. in path_to_file.d: > mkdir temp && cd temp > dmd -op -od/tmp/d01 ../bug_12116/fun.d > creates ./fun and /tmp/bug_12116/fun.o (BUG: expected: something under > /tmp/d01) > > rdmd -op -od/tmp/d01 ../bug_12116/fun.d > creates /tmp/d01/fun (BUG: inconsistent with dmd) and the .o under > */.rdmd-501/* (OK) > > > # with -c: > dmd -c -op -od/tmp/d01 ../bug_12116/fun.d > /tmp/bug_12116/fun.o (BUG) > > rdmd -c -op -od/tmp/d01 ../bug_12116/fun.d > creates /tmp/d01/fun.o (BUG: inconsistent with dmd) > > > # with no absolute path and not .. in file.d: > dmd -c -op -od/tmp/d01 bug_12116/fun.d > creates /tmp/d01/bug_12116/fun.o (OK) > > rdmd -c -op -od/tmp/d01 bug_12116/fun.d > creates /tmp/d01/fun.o (BUG:inconsistent with dmd) > > Other argument why -op is much less useful compared to -oq: > * forces you be at the root of module import paths > * if you have multiple module roots, it can't work: > > dmd -c -op -od/tmp/d01/ -Iroot1/import -Ipath2/root2/import/ > root1/import/std/path.d path2/root2/import/core/stdio.d > > => will create: > /tmp/d01/root1/import/std/path.o > /tmp/d01/path2/root2/import/core/stdio.o > > with -oq semantics are a lots easier, predictable, no weird edge cases, and > easy to implement: > /tmp/d01/std.path.o > /tmp/d01/core.stdio.o Could you please paste this entire post along with what _should_ be the behavior? Thanks. --