strangely enough, now that I've recompiled the program cabal does pass the correct flag and everything works as expected.
Yes, that is in ghc-options and therefore only does something when you compile; it's not consulted at runtime (indeed, running a program doesn't even look at the cabal file).