0

I'm trying to 'make' BIND DNS server.
I'm using the command: make -f Makefile.in and I get the error:
Makefile.in:32: *** missing separator (did you mean TAB instead of 8 Spaces?). Stop..
I tried it both on AntiX Linux (which is based on Debian testing) and on Ubuntu.
I tried versions 9.11.2, 9.10.6 and 9.9.11 of BIND.
I'm using keyboard layout QWERTY US UTF8 (but I did not edit the Makefile.in).

On line 32 of the Makefile.in there is this:
@BIND9_MAKE_RULES@
I've never seen such lines before (I'm new to 'make').
Could this be a directive replaced by space characters and cause the problem?

I know there are several questions like this, which are downvoted or closed as off topic, but some answers would be appreciated, or probably if you could tell me where should this question be asked?

gthanop
  • 3,035
  • 2
  • 10
  • 27

2 Answers2

2

You can't use Makefile.in as a makefile. It's not a makefile. It's a template for a makefile, that must be processed first to turn it into a real makefile, which will be called Makefile (no .in).

You should read the INSTALL or README file in the source distribution to learn how to build it. I haven't tried to build BIND (in a very, very long time) but most likely it comes with a configure script that you must run first. That script will create the Makefile for you. Then you run make (without any -f ... flags).

MadScientist
  • 92,819
  • 9
  • 109
  • 136
1

As corrected by MadScientist:

Makefile.in is a template file used by autoconf and friends. Specifically, autoconf takes configure.in file to generate a configure script. This script then takes Makefile.in and modifies it to create Makefile. What you found was a marker for this process. You can find more information here

HardcoreHenry
  • 5,909
  • 2
  • 19
  • 44
  • Is `autoconf` a program to run? – gthanop Oct 12 '17 at 21:13
  • 1
    `autoconf` is a standard program installed on most systems. It is usually invoked from a `.configure` script. As @MadScientist mentioned, there should be instructions in your packages' `INSTALL` or `README` files on how to install the system properly. – HardcoreHenry Oct 12 '17 at 21:35
  • Sorry, but this is not correct. You do NOT use "autoconf" to generate Makefiles. You use autoconf to convert `configure.ac` files (used to be called `configure.in` a long time ago) into a `configure` script. That step is performed by the _maintainers_ of the software (the people who published the BIND source distribution you downloaded). It is not done by the end user who downloads the source distribution: autoconf is not needed by those users. End users only need to run "configure". They should definitely not run autoconf. – MadScientist Oct 13 '17 at 16:17
  • I stand corrected -- yes, `autoconf` creates `.configure`, which then generates `Makefile` from `Makefile.in`. I'll update the answer. – HardcoreHenry Oct 13 '17 at 16:37