I am trying to modify a makefile to have a few lines
which are conditional on being on ia64. I found a
variable in my environment HOSTTYPE=ia64
that I thought I could use. In the makefile I have
ifeq ($(HOSTTYPE),ia64) but HOSTTYPE doesn't seem to
be defined unless I define in the makefile. (which defeats
the purpose) If I issue the command as
HOSTTYPE=ia64 make
that works but again it doesn't really do what I want.
According the to docs at www.gnu.org/software/make/manual,
all the environment variables are read in when make starts up
and are used unless they are overridden in the makefile.
Can anybody clarify this for me?

When you run make, you are starting a new process. Environment
variables are only copied to new processes if they are marked
for export. So... instead of typing HOSTTYPE=ia54, type
export HOSTTYPE=ia64, or follow HOSTTYPE=ia64 with
export HOSTTYPE before running make.

You are quite right. But what I am really looking for is a test
I can put in the makefile that doesn't require exporting
an environment variable. The problem is when an unknown
person downloads the zip file and wants to build it. This is not my project,
I am just porting to ia64. Also doesn't use autoconf/automake
or this wouldn't be a problem.

I am not sure what the problem is. Exports are local in the sense that
they only affect the current process (shell) and its descendants.
If you define them in a shell script, the user's commandline
environment isn't even affected.