cmp: fix C compiler invocation for cygwin

This commit is contained in:
Marius Gerbershagen 2020-06-13 11:25:20 +02:00
parent be2d90790f
commit d6b422fe39

View file

@ -51,18 +51,25 @@
(program (car program)))
(with-current-directory
;; when compiling ECL itself, we only have low-level functions
;; available, otherwise we can use run-program and get proper
;; quoting of arguments
#+ecl-min (multiple-value-bind (output-stream return-status pid)
(si:run-program-inner program args :default nil)
(setf output (collect-lines output-stream))
(multiple-value-setq (return-status result)
(si:waitpid pid t)))
#-ecl-min (multiple-value-bind (output-stream return-status process-obj)
(ext:run-program program args :wait nil)
(setf output (collect-lines output-stream))
(multiple-value-setq (return-status result)
(ext:external-process-wait process-obj t)))))
;; available ...
#+(and ecl-min (not cygwin))
(multiple-value-bind (output-stream return-status pid)
(si:run-program-inner program args :default nil)
(setf output (collect-lines output-stream))
(multiple-value-setq (return-status result)
(si:waitpid pid t)))
;; ... otherwise we can use run-program and get proper
;; quoting of arguments ...
#+(and (not ecl-min) (not cygwin))
(multiple-value-bind (output-stream return-status process-obj)
(ext:run-program program args :wait nil)
(setf output (collect-lines output-stream))
(multiple-value-setq (return-status result)
(ext:external-process-wait process-obj t)))
;; ... unless we're running on cygwin which has problems with
;; forking so we have to use si:system
#+cygwin
(setf result (si:system (format nil "~A~{ ~A~}" program args)))))
(cond ((null result)
(cerror "Continues anyway."
"Unable to execute:~%(EXT:RUN-PROGRAM ~S ~S)"