Skip to content

mveety/lispmake

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-*)

About

Something akin to make for Common Lisp.

Resources

License

Stars

Watchers

Forks

Packages

 
 
 

Contributors