kbuild: fix building single targets with make O=.. single-target
This fixes single targets build so it now works relaiably in
following cases:
- build with mixed kernel source and output files (make single-target)
- build with separate output directory (make O=.. single-target)
- external module with mixed kernel source and output files
(make M='pwd' single-target)
- external module with separate kernel source and output files
(make O=.. M='pwd' single-target)