mveety/lispmake
Folders and files
| Name | Name | Last commit date | ||
|---|---|---|---|---|
Repository files navigation
lispmake -- sorta okay makefiles for lisp Requirements to build and use: sbcl (support for other lisp implementations is either broken or non-existent. Patches welcome.) quicklisp (get it at https://www.quicklisp.org/beta/) How to build: if you don't have lispmake: sbcl --load bootstrap.lisp ./lispmake install if you have lispmake: lispmake ./lispmake install Targets: By default lispmake looks for the file "LMakefile". If it doesn't exist it just crashes and has lisp handle it. Targets are just extensions to the default name. So if you want an install target you make a file called "LMakefile.install" and run lispmake like "lispmake install". Other Files: Lispmake also handles using other files instead of the LMakefile. if you invoke lispmake like "lispmake file=[filename]" it allows you to use that to build. Targets still work with the normal convention of [filename].[target] . Overriding variables: You can override the default variables by passing [var]=[value] to lispmake at the command line. There are some special variables that are set at the command line like "lisp" (override the default lisp executable), "dobuild" (allow or prevent lispmake from running it's output), and "debug" (enable a firehose of debugging output). lisp takes a string and dobuild and debug both take a yes or a no. REVISION 14 NOTES: This version will likely require bootstrapping if coming from a previous revision. Run bootstrap.lisp in your lisp of choice then you can run ./lispmake install to get lispmake installed. LMakefiles from previous versions might require some changes to get up to date, your mileage may vary. This will be a rare event and I'm sorry for the inconvenience. REVISION 14 CHANGES: BUG FIXES! <3 Ability for user to define variables (via :configure) Ability to define variables via command line Ability to check for required file (via :require-file) :install works correctly now. Ability to print output to stdout (via :echo) Ability to execute lisp code inside of lispmake (via :eval) Ability to override the build time lisp implementation (via command line variable lisp=) :delete works correctly now and prints out each operation. Output files are named based on the target their generated from Command line arguments are considered targets unless they're assignments Files are only generated if :generate is evaluated. Executable output forms are only generated if package and toplevel are set. Added dobuild= command line variable. This overrides the makefile's default. Added internal variable target. Hold what the currently executing target is named. Added ability to include other files (via :include) Added ability to pass blocks of code as arguments (via :block) Added ability to conditionally execute code if a variable exists (via :if-defined) Added support for using ASDF to fetch dependencies and build projects. (via :asdf-*)