Q:

Getting GNU Make to parse shell config files in OSX? 

I've got a makefile for installing my personal repo of config files, part of which is compiling my emacs scripts:
compile:
    emacs -batch --eval "(progn (load \"~/.emacs\") (byte-recompile-directory \"~/.emacs.d\" 0))"

The problem is, on OSX, I have an alias called "emacs" that points to the Emacs.app binary for use in a terminal, this is defined in my ~/.bash_profile.  
Now, no matter what I do, I can't seem to get the shell that Make is calling to read a startup file to load that alias, so that compilation step always fails.   
Does anyone know how to do this? 

A:

.bash_profile is only read by interactive login shells.   Exported environment variables set in it are inherited through the process environment, which means that these settings are generally available to all programs the user starts (if bash is indeed the login shell, of course). 
No such inheritance happens for aliases, though.   Bash supports exported functions, but that's an obscure feature which can easily break other programs (for example, those which assume that environment variable values do not contain newlines).   If you go that route, you may have to use .bashrc instead, to make sure that these functions are exported by interactive bash shells which are not login shells. 
I expected the easiest solution is to put a directory like $HOME/bin on the PATH (in .bash_profile or .bashrc, whatever works best) and put an emacs wrapper script into that directory which invokes the actual binary using exec /path/to/Emacs.app "$@" (or maybe just a symbolic link would do).