Re: [vox-tech] Environment variables in make
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
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
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
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
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