Skip to content

`:entry-point` in ASDF file is ignored

Given a simple system:

  • test-entry-point.asd
(defsystem test-entry-point
  :build-operation "program-op"
  :build-pathname "test-entry-point"
  :entry-point "test-entry-point:main"
  :components ((:file "package"))
  :depends-on (#:asdf))
  • package.lisp
(defpackage test-entry-point
  (:use #:cl)
  (:export #:main))

(in-package #:test-entry-point)

(defun main ()
  (format t "Hello World!~%"))

In other implementations like SBCL, CCL, and Clisp, (asdf:make :test-entry-point) will produce an executable file that directly invokes the function defined after :entry-point in the system definition file, while ECL ignores this option. It seems only possible to achieve the same thing via (asdf:make-build :test-entry-point :type :program :epilogue-code '(progn (uiop:symbol-call :test-entry-point :main) (si:exit))), which makes it inconvenient to build a standalone executable in ECL.

ECL and system information:

     VERSION "21.2.1"
      VCS-ID "UNKNOWN"
          OS "Linux"
  OS-VERSION "5.15.78-1-MANJARO"
MACHINE-TYPE "x86_64"
    FEATURES (:QUICKLISP :ASDF-PACKAGE-SYSTEM :ASDF3.1 :ASDF3 :ASDF2 :ASDF
              :OS-UNIX :NON-BASE-CHARS-EXIST-P :ASDF-UNICODE :WALKER :CDR-1
              :CDR-5 :LINUX :FORMATTER :CDR-7 :ECL-WEAK-HASH :LITTLE-ENDIAN
              :ECL-READ-WRITE-LOCK :LONG-LONG :UINT64-T :UINT32-T :UINT16-T
              :COMPLEX-FLOAT :LONG-FLOAT :UNICODE :DFFI :CLOS-STREAMS
              :CMU-FORMAT :UNIX :ECL-PDE :DLOPEN :CLOS :THREADS :BOEHM-GC
              :ANSI-CL :COMMON-LISP :FLOATING-POINT-EXCEPTIONS
              :IEEE-FLOATING-POINT :PACKAGE-LOCAL-NICKNAMES :CDR-14
              :PREFIXED-API :FFI :X86_64 :COMMON :ECL)