Search code examples
makefileosx-yosemitetexinfo

Specify makeinfo to be used in make command


On OS X Yosemite, the standart texinfo version is quite old and does not suppprt certain features.

I now have installed, via homebrew, a newer version. As there is an already existing version, the binaries are not put into the PATH (keg only), which makes perfect sense.

Now, how can I tell make, without modifying the make file that I want to use the binary located at /usr/local/opt/texinfo/bin/makeinfo?

I could

  1. link makeinfo in the PATH
  2. execute make
  3. unlink texinfo

But I consider this un-elegant.

Is this my only option?


Solution

  • It depends on your makefile. If it uses a variable to hold the name of the makeinfo program, something like this:

    MAKEINFO = /usr/bin/makeinfo
    
    foo.info: foo.texi
           $(MAKEINFO) ...
    

    then you can simply run make MAKEINFO=/usr/local/opt/texinfo/bin/makeinfo.

    Alternatively, if it uses just the name of the program without a path, like makeinfo, you can set your $PATH variable before invoking make: PATH=/usr/local/opt/texinfo/bin:$PATH make

    If your makefile invokes makeinfo using a hardcoded path with no variable:

    foo.info: foo.texi
            /usr/bin/makeinfo ...
    

    then you're out of luck and you HAVE TO change your makefile.