In Xcode generator, SYMROOT setting breaks packaging dSYM files with Archive build products.
When building an Xcode project in archive mode, the products should include both binaries and external symbol files (dsym packages). Typically and in a non-archive build, dsyms are produced next to the binaries. When you override the SYMROOT variable in a project, both binaries and dsyms are produced in that new location. When that same project is built in Archive mode, Xcode creates a new build root to guarantee a clean build. The binaries are produced in this location and symlinked back to wherever the SYMROOT is set. It seems that the dsym packages are still only built in the SYMROOT location. They do not get placed alongside the binaries in the ArchiveIntermediates tree and thus the final Xcode archive package does not contain the symbols. This can be a significant issue when building with a continuous integration system and attempting to store the archives for later symbolication of user crash reports.