[elephant-cvs] CVS elephant
ieslick
ieslick at common-lisp.net
Thu Mar 1 02:46:42 UTC 2007
Update of /project/elephant/cvsroot/elephant
In directory clnet:/tmp/cvs-serv19415
Modified Files:
elephant.asd
Log Message:
Windows build support
--- /project/elephant/cvsroot/elephant/elephant.asd 2007/02/26 19:12:18 1.35
+++ /project/elephant/cvsroot/elephant/elephant.asd 2007/03/01 02:46:42 1.36
@@ -96,6 +96,62 @@
can be overridden or augmented by subclass methods"
#+(or mswindows windows)
(progn
+ (let* ((pathname (component-pathname c))
+ (directory (directory-namestring pathname))
+ (stdout-lines) (stderr-lines) (exit-status))
+ (let ((command (format nil "~A ~{~A ~}"
+ (c-compiler-path c)
+ (compiler-options (c-compiler c) c
+ :input-file (format nil "\"~A\"" (namestring pathname))
+ :output-file nil
+ :library nil))))
+ #+allegro (multiple-value-setq (stdout-lines stderr-lines exit-status)
+ (excl.osi:command-output command :directory directory))
+ #+lispworks (setf exit-status (system:call-system command :current-directory directory))
+ (unless (zerop exit-status)
+ (error 'operation-error :component c :operation o)))
+
+ (let ((command (format nil "dlltool -z ~A --export-all-symbols -e exports.o -l ~A ~A"
+ (format nil "\"~A\"" (namestring (make-pathname :type "def" :defaults pathname)))
+ (format nil "\"~A\"" (namestring (make-pathname :type "lib" :defaults pathname)))
+ (format nil "\"~A\"" (namestring (make-pathname :type "o" :defaults pathname))))))
+ #+allegro (multiple-value-setq (stdout-lines stderr-lines exit-status)
+ (excl.osi:command-output command :directory directory))
+ #+lispworks (setf exit-status (system:call-system command :current-directory directory))
+ (unless (zerop exit-status)
+ (error 'operation-error :component c :operation o)))
+
+ (let ((command (format nil "~A ~{~A ~}" ;; -I~A -L~A -l~A
+ (c-compiler-path c)
+ (compiler-options (c-compiler c) c
+ :input-file
+ (list (format nil "\"~A\"" (namestring
+ (make-pathname :type "o" :defaults pathname)))
+ "exports.o")
+ :output-file (format nil "\"~A\"" (first (output-files o c)))
+ :library t))))
+ #+allegro (multiple-value-setq (stdout-lines stderr-lines exit-status)
+ (excl.osi:command-output command :directory directory))
+ #+lispworks (setf exit-status (system:call-system command :current-directory directory))
+ (unless (zerop exit-status)
+ (error 'operation-error :component c :operation o)))))
+
+ #-(or mswindows windows)
+ (unless (zerop (run-shell-command
+ "~A ~{~A ~}"
+ (c-compiler-path c)
+ (compiler-options (c-compiler c) c
+ :input-file (namestring (component-pathname c))
+ :output-file (namestring (first (output-files o c))))))
+ (error 'operation-error :component c :operation o)))
+
+#|
+(defmethod perform ((o compile-op) (c elephant-c-source))
+ "Run the appropriate compiler for this platform on the source, getting
+ the specific options from 'compiler-options method. Default options
+ can be overridden or augmented by subclass methods"
+ #+(or mswindows windows)
+ (progn
(let ((pathname (component-pathname c)))
(unless (zerop (run-shell-command
(format nil "~A ~{~A ~}"
@@ -130,6 +186,12 @@
:input-file (namestring (component-pathname c))
:output-file (namestring (first (output-files o c))))))
(error 'operation-error :component c :operation o)))
+|#
+
+;;Cygwin compile script:
+;;gcc -mno-cygwin -mwindows -std=c99 -c libmemutil.c
+;;dlltool -z libmeutil.def --export-all-symbols -e exports.o -l libmemutil.lib libmemutil.o
+;;gcc -shared -mno-cygwin -mwindows libmemutil.o exports.o -o libmemutil.dll
(defmethod operation-done-p ((o compile-op) (c elephant-c-source))
"Is the first generated library more recent than the source file?"
@@ -167,12 +229,6 @@
(if (listp input-file) input-file (list input-file))
(when output-file (list "-o" output-file))))
-;;Cygwin script:
-;;gcc -mno-cygwin -mwindows -std=c99 -c libmemutil.c
-;;dlltool -z libmeutil.def --export-all-symbols -e exports.o -l libmemutil.lib libmemutil.o
-;;gcc -shared -mno-cygwin -mwindows libmemutil.o exports.o -o libmemutil.dll
-
-
(defmethod compiler-options ((compiler (eql :msvc)) (c elephant-c-source) &key input-file output-file)
(declare (ignore input-file output-file))
(error "MSVC compiler option not supported yet"))
More information about the Elephant-cvs
mailing list