I'm getting tired of having to make fixes like ce4887bd0. I think we should rearrange things so that src/port/ and src/common/ compile all their files a third time using shared-library-friendly switches, put them into new .a files, and have libpq and the ecpg libraries just include those libraries instead of what they're doing now.
This would result in compiling some of the port+common files uselessly, since they'd never actually get pulled in by any shared library. But I think we're approaching the point where we might have a net savings of build time anyway, due to not having to compile the same files multiple times in different subdirectories. And it'd sure be a savings of developer brain-cells and sanity.
Maybe use the extension "_shlib" (vs "_srv") for these .o and .a files.