If PAL were a shared library in a CMake build, then it wouldn’t build successfully if there were layering violations. I think we should do something like that to enforce good design, even if the Mac Xcode projects treat it as a static library or even just a part of WebCore.