Merge branch 'cygwin-fix-gcc-invocation' into 'develop'

fix C compiler invocation for cygwin

See merge request embeddable-common-lisp/ecl!216
This commit is contained in:
Daniel Kochmański 2020-06-15 10:25:21 +00:00
commit dc42ba2ec7

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)"