Afif Elghraoui <aelghraoui <at> sdsu.edu> writes: > > Hello, > I'm looking for a way to be able to store custom makefile rules in > special folders. > I see that the Makefile variable .INCLUDE_DIRS is set to "/usr/include > /usr/local/include /usr/include" on my machine by default, but is there > an environment variable I can set to add different directories (like > $HOME/include) in the same > way that can be done for CPATH, LIBRARY_PATH, and MANPATH for other things? > > I know that i can also pass in a custom include path on the command > line, but I would like to have some files with generic rules that I can > include without any special command line invocation or hardcoding the > absolute path. > > Thanks and regards > Afif >
.INCLUDE_DIRS is a readonly construct in GNU make, so you can't take that route to do what you are intending. However, all's not lost; say your environment variable is INC_LOCAL, then do this in your makefile: # these are the makefiles you want included (YMMV) INC_MKS := a.mk junk.mk INC_DEFAULT_MKS :=# ifneq '$(INC_LOCAL)' '' INC_LOCAL_MKS := $(foreach i,$(INC_MKS),$(if $(wildcard $(INC_LOCAL)/$i),$(wildcard $(INC_LOCAL)/$i),$(eval INC_DEFAULT_MKS += $i))) else INC_DEFAULT_MKS := $(INC_MKS) endif include $(INC_LOCAL_MKS) $(INC_DEFAULT_MKS) $(info list=$(INC_MKS)) $(info makefiles loaded from the env variable =$(INC_LOCAL_MKS)) $(info makefiles loaded from the default paths =$(INC_DEFAULT_MKS)) _______________________________________________ Help-make mailing list Help-make@gnu.org https://lists.gnu.org/mailman/listinfo/help-make