]> git.eshelyaron.com Git - emacs.git/commitdiff
* Handle `comp-native-driver-options' both as file-local both as global
authorAndrea Corallo <akrl@sdf.org>
Sun, 7 Mar 2021 20:56:06 +0000 (21:56 +0100)
committerAndrea Corallo <akrl@sdf.org>
Sun, 7 Mar 2021 21:20:07 +0000 (22:20 +0100)
* src/comp.c (add_driver_options): Throw an error if
`comp-native-driver-options' is set globally but
'gcc_jit_context_add_driver_option' is not available, ignore for
the file-local case.

src/comp.c

index b68adf31d68bdb53c78e2e5f2bf34d0150cf7493..e6f672de254ce6a131ee873d22148c5a0a53d9d7 100644 (file)
@@ -4334,9 +4334,9 @@ DEFUN ("comp-native-driver-options-effective-p",
 static void
 add_driver_options (void)
 {
-  Lisp_Object options = comp.driver_options;
+  Lisp_Object options = Fsymbol_value (Qcomp_native_driver_options);
 
-#if defined (LIBGCCJIT_HAVE_gcc_jit_context_add_driver_option) \
+#if defined (LIBGCCJIT_HAVE_gcc_jit_context_add_driver_option) \
   || defined (WINDOWSNT)
   load_gccjit_if_necessary (true);
   if (!NILP (Fcomp_native_driver_options_effective_p ()))
@@ -4347,7 +4347,6 @@ add_driver_options (void)
                                            ENCODE_FILE or
                                            ENCODE_SYSTEM.  */
                                         SSDATA (XCAR (options)));
-  return;
 #endif
   if (CONSP (options))
     xsignal1 (Qnative_compiler_error,
@@ -4355,6 +4354,20 @@ add_driver_options (void)
                            " via `comp-native-driver-options' is"
                            " only available on libgccjit version 9"
                            " and above."));
+
+  /* Captured `comp-native-driver-options' because file-local.  */
+#if defined (LIBGCCJIT_HAVE_gcc_jit_context_add_driver_option) \
+  || defined (WINDOWSNT)
+  options = comp.driver_options;
+  if (!NILP (Fcomp_native_driver_options_effective_p ()))
+    FOR_EACH_TAIL (options)
+      gcc_jit_context_add_driver_option (comp.ctxt,
+                                        /* FIXME: Need to encode
+                                           this, but how? either
+                                           ENCODE_FILE or
+                                           ENCODE_SYSTEM.  */
+                                        SSDATA (XCAR (options)));
+#endif
 }
 
 DEFUN ("comp--compile-ctxt-to-file", Fcomp__compile_ctxt_to_file,