0.8.7.15:
[sbcl.git] / contrib / sb-grovel / def-to-lisp.lisp
index b73553f..b16560b 100644 (file)
@@ -19,7 +19,7 @@
                 c-name c-el-name)
         ;; length
        (if distrust-length
-           (format stream "printf(\"nil\");")
+           (format stream "printf(\"|CL|:|NIL|\");")
            (format stream "{ ~A t;printf(\"%d\",(sizeof t.~A));}~%"
                    c-name c-el-name))
         (format stream "printf(\")\\n\");~%")))))
@@ -50,8 +50,12 @@ printf(\"(in-package ~S)\\\n\");~%" package-name)
       (destructuring-bind (type lispname cname &optional doc) def
         (cond ((eq type :integer)
                (format stream
-                       "printf(\"(cl:defconstant ~A %d \\\"~A\\\")\\\n\",~A);~%"
-                       lispname doc cname))
+                       "#ifdef ~A~%~
+                        printf(\"(cl:defconstant ~A %d \\\"~A\\\")\\\n\",~A);~%~
+                        #else~%~
+                        printf(\"(sb-int:style-warn \\\"Couln't grovel definition for ~A (unknown to the C compiler).\\\")\\n\");~%~
+                        #endif~%"
+                       cname lispname doc cname cname))
              ((eq type :type)
               (format stream
                        "printf(\"(sb-alien:define-alien-type ~A (sb-alien:%ssigned %d))\\\n\",SIGNED_(~A),8*(sizeof(~A)));~%"
@@ -100,8 +104,12 @@ printf(\"(in-package ~S)\\\n\");~%" package-name)
     (funcall (intern "C-CONSTANTS-EXTRACT" (find-package "SB-GROVEL"))
             filename tmp-c-source (constants-package component))
     (and               
-     (= (run-shell-command "gcc -o ~S ~S" (namestring tmp-a-dot-out)
-        (namestring tmp-c-source)) 0)
+     (= (run-shell-command "gcc ~A -o ~S ~S"
+                          (if (sb-ext:posix-getenv "EXTRA_CFLAGS")
+                              (sb-ext:posix-getenv "EXTRA_CFLAGS")
+                               "")
+                          (namestring tmp-a-dot-out)
+                          (namestring tmp-c-source)) 0)
      (= (run-shell-command "~A >~A"
                           (namestring tmp-a-dot-out)
                           (namestring tmp-constants)) 0)