[vox-tech] Environment variables in make

Jeff Newmiller jdnewmil at dcn.davis.ca.us
Fri Oct 6 18:49:30 PDT 2006


Richard Harke wrote:
> On Thu October 5 2006 20:42, 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.
> 
> 
> 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.

> Hey, I just realized I can use $(shell uname -m)   Hurray!

Sounds appropriate.

-- 
---------------------------------------------------------------------------
Jeff Newmiller                        The     .....       .....  Go Live...
DCN:<jdnewmil at dcn.davis.ca.us>        Basics: ##.#.       ##.#.  Live Go...
                                       Live:   OO#.. Dead: OO#..  Playing
Research Engineer (Solar/Batteries            O.O#.       #.O#.  with
/Software/Embedded Controllers)               .OO#.       .OO#.  rocks...1k
---------------------------------------------------------------------------


More information about the vox-tech mailing list