Myke - My Make Replacement

Myke is a make-like program I wrote several years ago to circumvent the tedious detail you have to put into Makefiles. Myke's syntax is a superset of make's so if you're already adept with make you're halfway there. Most of the myke extensions have to do with expressivity. For example, you can say this:
	CFILES	= $("*.c" G)		# glob up all the C sources
	OFILES	= $((CFILES P)).o	# enumerate the CFILES, strip the .c,
					# add a .o
	it: $(OFILES)
		cc -o $@ $(OFILES)
	%.o: %.c
		cc -c $?
Myke also allows you to put these rules in a configuration file, thus saving enumerating them in every Mykefile. Taken to an extreme you can omit the Mykefiles altogether.

Here is my .mykerc file as an example.

Here is the manual entry: web page, source form.

Installing Myke

Prebuilt Binaries

If you have one of the machines below you can save yourself the trouble of building myke. The following executables have libcs staticly linked, so you don't need to fetch the library, just the myke executable.

The Source

If you don't have one of the above machines, you'll want the source.

Licence: you can do what you like with this, but if you give it to someone else make sure they know I wrote it, and if you modify it make sure the mods are clearly marked as yours. If you make fixes or improvements, I'd appreciate patches and descriptions sent to me for incorporation in my central source. Naturally you'll be credited with such changes.

The source for myke comes in three parts:

It's maintained with itself, so you will also want tools.tar.gz which is a small collection of shell scripts used to bootstrap the compile. Currently these are: cccs, a simple wrapper for the cc command line, and gccanal, a simple wrapper for gcc which turns on lots of warnings. cccs calls gccanal, so if you want to use another cc command line then cccs is the script to hack. (Oh yeah, you'll have to hack cccs anyway to change the csinc= line at the top to point at the include directory you'll be making below.)



Porting myke is mostly a matter of porting libcs, a usually straightforward task. With luck, there will already be a target for your architecture.

Building libcs.a

Building myke

Testing myke

Install my .mykerc file as your own. Install the myke executable you just made somewhere suitable (eg $HOME/bin). Go to the libcs directory and say: