[vox-tech] Environment variables in make

Micah Cowan micah at cowan.name
Fri Oct 6 11:37:34 PDT 2006


On Thu, 2006-10-05 at 20:42 -0700, Jeff Newmiller wrote:
> Richard Harke wrote:
> > 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.

To correct this just slightly: if it's not exported, it's not actually
an environment variable, just a shell variable.

"env | grep VARNAME" is sometimes useful for determining whether a shell
variable is exported or not.

-- 
Micah J. Cowan
Programmer, musician, typesetting enthusiast, gamer...
http://micah.cowan.name/




More information about the vox-tech mailing list