A little background, because this might be kind of confusing: the project I'm working on is one where most of the code is the same, but there are some files that change based on the platform we're deploying to.  For this, the root folder has all of the "core" files that don't change, and then there is a directory for each platform with the files that change.  So there's a baz/foo.c and a bar/foo.c, because foo.c changes depending on whether it's deployed to baz or bar.  Makefiles and such make all this magic work.
The quesiton is, I'm working on a new platform (we'll say qux) that is based on bar, so I've been working in a branch, and making modifications in the bar directory.  Now I want to rename that directory to qux, but preserve the original bar in the trunk when it comes time to merge, because that platform still exists.  So my ultimate goal is to, in the trunk after merge, have baz and bar as they were before my meddling, and a new folder qux with my changes (which are currently in the branch under the folder bar, and are based on the original bar).
Is there an easy way to do this?  If I rename bar to qux in my branch, it seems like it'll try to delete bar when I merge it back into trunk, which isn't what I want to happen.  Do I need to do something like create a new folder qux in my branch, copy files into it from bar, and then revert bar back to its original state?  Or is there a better way to do this?
Edit: To be clear, there are changes already in the bar folder that need to be reverted if I copy the files into a new folder.