Common Lisp Scripts

As part of my project to learn common lisp, or at least write more common lisp as part of my day to day work and life, I've

This is a total rip off of this blog post, with a few minor changes:

  • I hacked some makefile goodness so that it will automatically create binaries for all .lisp files, and means that you can drop a script in the directory and not have to edit the makefile to get the magic to happen.
  • I switched to using buildapp to rather than cl-launch. Buildapp feels a bit more maintained, and I wanted practice using it. Otherwise, I don't think it matters.

The makefile:

TARGETS := $(subst .lisp,,$(wildcard *.lisp))

all:$(TARGETS)

%:%.lisp
    @echo [build]: creating $@
    @buildapp --load $< --entry script:run --output $@
    @echo [build]: created $@

clean:
    @rm -f $(TARGETS)

Hello world:

(cl:defpackage #:script
(:use #:cl)
(:export #:run))

(cl:in-package :script)

(defun run (argv)
   (format t "hello world~%"))

As an aside, I also updated the buildapp aur package.

Pros:

  • Common lisp scripts.
  • The ability to integrate writing lisp into your existing Linux/Unix workflow and processes.
  • Not having to think about packaging or build architecture for trivial operations.

Cons:

  • ~40+ meg executable.
  • Only one source file per script.
comments powered by Disqus