[Ecls-list] Error using make-build on Windows platform

Brian Jones brianj at otterspace.com
Sat Dec 20 08:25:20 UTC 2008


I'm attempting to create a stand-alone EXE using (asdf:make-build) on a
Windows Xp Pro 64 platform with Visual C++ 8 team edition installed, using
the docs in http://ecls.sourceforge.net/new-manual/ch16s03.html.

Using slime, I get the output from the command that claims all works, but no
EXE file is created. 

Using the command line raw, running in the ECL package directory, I get an
error on the CL call to do the final link that claims the output filename
matches the input filename <pathfoo>\build-test.lib.

The external command displayed in the NOTE output looks fine, however.

This generates an output file (with the right name) with a length of zero
bytes.

I built a tiny example, an asdf loadable package with a single function
detailed below with source and output from both slime and the cmd.exe run.

This is the same failure we're hitting in a larger real system with many
packages loaded with asdf (and dependencies). This shows the identical error
fortunately.

Is there something I'm missing or doing wrong, or any easy work-around?

Thank You!

Brian Jones (Otter)


ASD file build-test.asd:

(in-package #:cl-user)

(defpackage #:build-test-asd
    (:use :common-lisp :asdf ))

(in-package #:build-test-asd)

(defsystem build-test
  :name "build-test"
  :version "1.0"
  :maintainer "brianj at otterspace.com"
  :author "Brian Jones"
  :licence "unrestricted"
  :description "Make an executable"
  :serial t
  
  :components ((:static-file "build-test.asd")
	       (:file "package")
	       (:file "go")))

*******

package.lisp:

(cl:defpackage #:build-test
  (:use :common-lisp))

*******

go.lisp:

(in-package :build-test)

(defun entry ()
  (format t "Hello, world!~%"))

(export 'entry)

****************

Then I ran the following lines (in the repl in slime and via "-load
make-exe.lisp" which held them at the command line):

(asdf:operate 'asdf:load-op :build-test)
(asdf:make-build :build-test :type :program :epilogue-code '(progn
(build-test:entry) (ext:quit 0)))

********

The result in SLIME was:

CL-USER> (asdf:make-build :build-test :type :program :epilogue-code '(progn
(build-test:entry) (ext:quit 0)))
;;; Note: Scanning #P"e:/build-test/go.obj"
;;; Note: Found tag: "_eclC0VAy4n7_jgbzXXy"
;;; Note: Scanning #P"e:/build-test/package.obj"
;;; Note: Found tag: "_eclk5Pv83m7_dUbzXXy"
;;; Note: Invoking external command:
;;; cl  /MD /EHsc /DGC_DLL /nologo -DECL_THREADS  -O2
-I"e:/ecl-0.9l/msvc/package/" -w -c "e:/temp/brianj/ECLC31.c"
-Fo"e:/temp/brianj/ECLC31.obj"
;;; Note: Invoking external command:
;;; link -lib @static_lib.tmp
;;; Note: Invoking external command:
;;; cl  /MD /EHsc /DGC_DLL /nologo -DECL_THREADS  -O2
-I"e:/ecl-0.9l/msvc/package/" -w -c "e:/temp/brianj/ECLC32.c"
-Fo"e:/temp/brianj/ECLC32.obj"
;;; Note: Invoking external command:
;;; cl -Fe"e:/build-test/build-test.exe" "e:/temp/brianj/ECLC32.obj"
"e:/build-test/build-test.lib"  /MD /link /nologo /nodefaultlib:libcmt
/nodefaultlib:libcmtd /nodefaultlib:libc /nodefaultlib:libd ecl.lib
user32.lib ws2_32.lib shell32.lib
NIL

No errors or warnings, but no EXE created, either.

The output from the command-line run:

;;; Note: Invoking external command:
;;; cl -Fe"E:/cvs/grindwork/gwc/lisp/build-test/build-test.exe"
"E:/temp/brianj/ECLC3E.obj" "E:/build-test/build-test.lib"  /MD /link
/nologo /nodefaultlib:libcmt /nodefaultlib:libcmtd /nodefaultlib:libc
/nodefaultlib:libd ecl.lib user32.lib ws2_32.lib shell32.lib

LINK : fatal error LNK1149: output filename matches input filename
'E:\build-test\build-test.lib'

ECL (Embeddable Common-Lisp) 0.9i (CVS 2008-06-19 17:09)
Copyright (C) 1984 Taiichi Yuasa and Masami Hagiya
Copyright (C) 1993 Giuseppe Attardi
Copyright (C) 2000 Juan J. Garcia-Ripoll
ECL is free software, and you are welcome to redistribute it
under certain conditions; see file 'Copyright' for details.
Type :h for Help.  Top level.

(NOTE: I tried to re-assemble the long line instead of the CMD.EXE chop and
I separated out the link error for clarity)

This one created an EXE (of the right name, in the right place) of zero
bytes.





More information about the ecl-devel mailing list