I'm currently re-writing my build script for
Olins dev.env to use MAKE ( using NMAKE from an MS VC
installation. Anyone know of any stand-alone, good
make utility ?).

Now, I have some problems. For some reason I can't
get more then the first rule/command combo to
run. Anything after the first is just ignorded.
If I comment out the first rule/command (with #),
the next rule combo runs just fine.

> Before I download and install a complete package,
> do you know if the make tool is available alone ?

I think it requires DLLs in the base package. The installer lets you
pick and choose what you want to download and install; you should be
able to just install "make" and whatever is required to support it.

So, just got MAKE to work with the Embedinc tools
(thanks to Dave Tweeds example)

Seems as you can *not* call a BAT file from within
a "makefile". After the first call to a BAT file,
MAKE just exits. After changing the makefile to
call the EXE's (PREPIC, MPASMWIN and MPLINK) directly,
all now works. Does this sounds reasonable ?

(I'm using the UnxUtils package from GNUWIN, b.t.w.)

I'll include generic examples of a makefile and build
(BAT) file to call MAKE in my next version of the
PDF document. It will also include a section
on initial setup of a new project and tips on
setting up a working environment within UltraEdit with
examples of calls to the build (BAT) file and Xwisp/Wisp628.
Maybe later today...

Right now I have two buttons in a "PIC-toolbar" in UE,
one "re-makes" the project (after automaticly saving all
modified source files) using make to re-build "as-needed",
the other button re-flashes the PIC using Xwisp. Nice... :-)

GNU make is free. Also search simtel archives. I think that NMAKE is not
such a good idea. M$ has a way of doing things their own way (and not
documenting more than 50% of it). Just my opinion. I use GNU make (the
DJGPP version) to build under DOS for mcs51 and pic. Also GNU make under
Linux for same. It will work in windows. Another make utility is from
Borland. If you have any one of their compiler packages then you have it.

Anyway in your example, there is only one goal (by default, the first
one). So to make them both add a goal like:

GNU make is free. Also search simtel archives. I think that NMAKE is not
such a good idea. M$ has a way of doing things their own way (and not
documenting more than 50% of it). Just my opinion. I use GNU make (the
DJGPP version) to build under DOS for mcs51 and pic. Also GNU make under
Linux for same. It will work in windows. Another make utility is from
Borland. If you have any one of their compiler packages then you have
it.

Anyway in your example, there is only one goal (by default, the first
one). So to make them both add a goal like:

makefile is a set of instructions for a program called make that can run
commands for you (and save a lot of typing and time). I think someone once
wrote an adventure game in make but that is beyond the point. make works
by rules. Eg rules:

this: a b c
<tab> some_program -input a b c -output this

that: this
<tab> some_other_program -input this -output that

<tab> means one or more tab characters. This is important. You cannot use
spaces here for most make programs.

Each step in your job is described by a rule, and make will know how to
find them. Eg for the above 'make that' will go to the that rule, discover
that it depends on this, go to the this rule, find a, b, c, and produce
this from them, then go back to the that rule and make that from this. But
if this already exists when that looks for it, then it will be used
instead of being made, provided it is more recent than all of a,b and c.

make does not care what the programs actually do, it just knows how to
navigate the rules and run the programs. It also has a lot of clever
defaults built in, and wildcards, and default build rules and much much
more. It seems to be the standard tool for building software packages
under most operating systems excepting M$ Windows (which had to have their
own kind of make which is incompatible with everyone else's, by using
different default rules).