object files were being put in ./build/target/arm/services/../services, which resolves to build/target/services which is not a unique path for distinct architectures.

The cause was using ../modulename as the module path. When the module is itself being built, the module path is simply ., so the object files are put in buld/target/arm/services/./src/etc...