[Ecls-list] Question about command-line switches

John Wiegley jwiegley at gmail.com
Wed Nov 14 11:43:08 UTC 2007


I was trying to use automake the other day to build a small project that
turns some Lisp code into an executable binary.  Using ECL, of course.

The top part of my Makefile.am file was as trivial as can be, since ECL
has very nice command-line switches for producing object files:

   bin_PROGRAMS = hello
   hello_SOURCES  = hello.lisp

   ECL = ecl

   .lisp.o:
       $(ECL) -s -o $@ -compile $<

However, the rule to create an executable, although it works, is not
trivial at all (I hope I'm just missing something here):

   hello$(EXEEXT): $(hello_OBJECTS) $(hello_DEPENDENCIES)
       $(ECL) -eval "(require 'cmp)" \
              -eval "(let ((args (nthcdr 8 (ext:command-args)))) \
                       (c:build-program (first args) :lisp-files (rest  
args)))" \
              -eval "(quit)" -- $@ $(hello_OBJECTS)

I was wondering if a command-line switch could be added so that  
producing
a binary from a set of objects could be as simple as this:

   hello$(EXEEXT): $(hello_OBJECTS) $(hello_DEPENDENCIES)
       $(ECL) -s -o $@ -link $<

Once that's in place, it would not be hard to write a set of autoconf/ 
automake
macros so that once a person installs ECL, building simple Lisp  
executables
wouldn't require writing any rules at all, just defining the PROGRAMS  
and
SOURCES lines.

John




More information about the ecl-devel mailing list