My preference is not widely shared. I take a page
from Linus Torvalds, define the API to program to, and
write a simple wrapper for that API. Then all I ever
need to do is write to that wrapper.
I might implement in this case by checking for the existence of
the module at run-time, and initialize a bunch of anon
subs accordingly. My API wind up behind the scene
calling them, and they will automagically do the right
thing (even if that thing is to spit out debugging info
or else just do nothing).
For the full philosophy, here is a good rant from Linus explaining
the why's and wherefore's. Even if you disagree it is a
worthwhile read.