Segregating the derived objects of different variants

It is essential to keep derived objects (object modules, executables) built for different architectures separate.

This topic describes the following two approaches, though other approaches are possible.