+(defmacro defsubst-maybe (name &rest everything-else)
+ (or (and (fboundp name)
+ (not (get name 'defsubst-maybe))
+ )
+ (` (or (fboundp (quote (, name)))
+ (progn
+ (defsubst (, name) (,@ everything-else))
+ (put (quote (, name)) 'defsubst-maybe t)
+ ))
+ )))
+
+(defmacro defmacro-maybe (name &rest everything-else)
+ (or (and (fboundp name)
+ (not (get name 'defmacro-maybe))
+ )
+ (` (or (fboundp (quote (, name)))
+ (progn
+ (defmacro (, name) (,@ everything-else))
+ (put (quote (, name)) 'defmacro-maybe t)
+ ))
+ )))
+