Re: [vox-tech] Environment variables in make

2006-10-06 Thread Jeff Newmiller

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 NewmillerThe .   .  Go Live...
DCN:<[EMAIL PROTECTED]>Basics: ##.#.   ##.#.  Live Go...
  Live:   OO#.. Dead: OO#..  Playing
Research Engineer (Solar/BatteriesO.O#.   #.O#.  with
/Software/Embedded Controllers)   .OO#.   .OO#.  rocks...1k
---
___
vox-tech mailing list
vox-tech@lists.lugod.org
http://lists.lugod.org/mailman/listinfo/vox-tech


Re: [vox-tech] Environment variables in make

2006-10-06 Thread Micah Cowan
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/


___
vox-tech mailing list
vox-tech@lists.lugod.org
http://lists.lugod.org/mailman/listinfo/vox-tech


Re: [vox-tech] Environment variables in make

2006-10-06 Thread Richard Harke
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.

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

Richard
___
vox-tech mailing list
vox-tech@lists.lugod.org
http://lists.lugod.org/mailman/listinfo/vox-tech


Re: [vox-tech] Environment variables in make

2006-10-05 Thread Jeff Newmiller

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.

--
---
Jeff NewmillerThe .   .  Go Live...
DCN:<[EMAIL PROTECTED]>Basics: ##.#.   ##.#.  Live Go...
  Live:   OO#.. Dead: OO#..  Playing
Research Engineer (Solar/BatteriesO.O#.   #.O#.  with
/Software/Embedded Controllers)   .OO#.   .OO#.  rocks...1k
---
___
vox-tech mailing list
vox-tech@lists.lugod.org
http://lists.lugod.org/mailman/listinfo/vox-tech


[vox-tech] Environment variables in make

2006-10-05 Thread Richard Harke
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?

Richard Harke
___
vox-tech mailing list
vox-tech@lists.lugod.org
http://lists.lugod.org/mailman/listinfo/vox-tech