;;; cc-bytecomp.el --- compile time setup for proper compilation
-;; Copyright (C) 2000-2012 Free Software Foundation, Inc.
+;; Copyright (C) 2000-2014 Free Software Foundation, Inc.
;; Author: Martin Stjernholm
;; Maintainer: bug-cc-mode@gnu.org
(cc-bytecomp-setup-environment)
t))))
+(defvar cc-bytecomp-noruntime-functions nil
+ "Saved value of `byte-compile-noruntime-functions'.")
+
(defmacro cc-require (cc-part)
"Force loading of the corresponding .el file in the current directory
during compilation, but compile in a `require'. Don't use within
Having cyclic cc-require's will result in infinite recursion. That's
somewhat intentional."
`(progn
- (eval-when-compile (cc-bytecomp-load (symbol-name ,cc-part)))
+ (eval-when-compile
+ (if (boundp 'byte-compile-noruntime-functions) ; in case load uncompiled
+ (setq cc-bytecomp-noruntime-functions
+ byte-compile-noruntime-functions))
+ (cc-bytecomp-load (symbol-name ,cc-part)))
+ ;; Hack to suppress spurious "might not be defined at runtime" warnings.
+ ;; The basic issue is that
+ ;; (eval-when-compile (require 'foo))
+ ;; (require 'foo)
+ ;; produces bogus noruntime warnings about functions from foo.
+ (eval-when-compile
+ (setq byte-compile-noruntime-functions cc-bytecomp-noruntime-functions))
(require ,cc-part)))
(defmacro cc-provide (feature)
during compilation, but do a compile time `require' otherwise. Don't
use within `eval-when-compile'."
`(eval-when-compile
- (if (and (featurep 'cc-bytecomp)
+ (if (and (fboundp 'cc-bytecomp-is-compiling)
(cc-bytecomp-is-compiling))
(if (or (not load-in-progress)
(not (featurep ,cc-part)))