diff mbox series

[RFC] autotools: do not overwrite first include path

Message ID 20191212085748.13802-1-michael@walle.cc
State Superseded
Headers show
Series [RFC] autotools: do not overwrite first include path | expand

Commit Message

Michael Walle Dec. 12, 2019, 8:57 a.m. UTC
The first include path is special in aclocal. For example it is the path
for the --install option. Also, the first include is treated in a
special way if it doesn't exists. This might be the case if there is the
following construct:

  configure.ac: AC_CONFIG_MACRO_DIR([m4])
  Makefile.am: ACLOCAL_AMFLAGS="-I m4"

If the package doesn't have local macros, the m4/ directory might not
exist. aclocal will then just issue a warning instead of aborting the
execution with a fatal error. See discussion here:
  https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=565663

Don't use the "-I" option in aclocal. Instead use ACLOCAL_PATH to pass
the system-wide include dirs.

As a side effect this should fix the use of $(ACLOCAL) alone. Up until
now, $(ACLOCAL) didn't include the ACLOCAL_HOST_DIR system include path.

autoreconf will pass the "-I" options to every tool it runs. So move the
argument to each individual tool except aclocal.

Signed-off-by: Michael Walle <michael@walle.cc>
Signed-off-by: Heiko Thiery <heiko.thiery@gmail.com>
---
 package/autoconf/autoconf.mk | 6 +++---
 package/automake/automake.mk | 2 +-
 2 files changed, 4 insertions(+), 4 deletions(-)

Comments

Heiko Thiery Dec. 12, 2019, 10:08 a.m. UTC | #1
Hi,

On 12/12/19 9:57 AM, Michael Walle wrote:
> The first include path is special in aclocal. For example it is the path
> for the --install option. Also, the first include is treated in a
> special way if it doesn't exists. This might be the case if there is the
> following construct:
> 
>    configure.ac: AC_CONFIG_MACRO_DIR([m4])
>    Makefile.am: ACLOCAL_AMFLAGS="-I m4"
> 
> If the package doesn't have local macros, the m4/ directory might not
> exist. aclocal will then just issue a warning instead of aborting the
> execution with a fatal error. See discussion here:
>    https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=565663
> 
> Don't use the "-I" option in aclocal. Instead use ACLOCAL_PATH to pass
> the system-wide include dirs.
> 
> As a side effect this should fix the use of $(ACLOCAL) alone. Up until
> now, $(ACLOCAL) didn't include the ACLOCAL_HOST_DIR system include path.
> 
> autoreconf will pass the "-I" options to every tool it runs. So move the
> argument to each individual tool except aclocal.
> 
> Signed-off-by: Michael Walle <michael@walle.cc>
> Signed-off-by: Heiko Thiery <heiko.thiery@gmail.com>

I made a test by removing the $(pkg)_POST_PATCH_HOOKS for the following 
packages:

- atest
- davici
- libscsi
- ltrace
- minicom
- open-lldp
- openpgm
- pdbg

The result is that all this packages still build without this hook.

--
Heiko
Heiko Thiery Jan. 7, 2020, 12:51 p.m. UTC | #2
Hi All,

Am Do., 12. Dez. 2019 um 11:08 Uhr schrieb Heiko Thiery
<heiko.thiery@gmail.com>:
>
> Hi,
>
> On 12/12/19 9:57 AM, Michael Walle wrote:
> > The first include path is special in aclocal. For example it is the path
> > for the --install option. Also, the first include is treated in a
> > special way if it doesn't exists. This might be the case if there is the
> > following construct:
> >
> >    configure.ac: AC_CONFIG_MACRO_DIR([m4])
> >    Makefile.am: ACLOCAL_AMFLAGS="-I m4"
> >
> > If the package doesn't have local macros, the m4/ directory might not
> > exist. aclocal will then just issue a warning instead of aborting the
> > execution with a fatal error. See discussion here:
> >    https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=565663
> >
> > Don't use the "-I" option in aclocal. Instead use ACLOCAL_PATH to pass
> > the system-wide include dirs.
> >
> > As a side effect this should fix the use of $(ACLOCAL) alone. Up until
> > now, $(ACLOCAL) didn't include the ACLOCAL_HOST_DIR system include path.
> >
> > autoreconf will pass the "-I" options to every tool it runs. So move the
> > argument to each individual tool except aclocal.
> >
> > Signed-off-by: Michael Walle <michael@walle.cc>
> > Signed-off-by: Heiko Thiery <heiko.thiery@gmail.com>
>
> I made a test by removing the $(pkg)_POST_PATCH_HOOKS for the following
> packages:
>
> - atest
> - davici
> - libscsi
> - ltrace
> - minicom
> - open-lldp
> - openpgm
> - pdbg
>
> The result is that all this packages still build without this hook.
>
> --
> Heiko

Has anyone the time to take a look on it and give a comment?

BR
Heiko
Arnout Vandecappelle Jan. 13, 2020, 11:37 p.m. UTC | #3
On 12/12/2019 09:57, Michael Walle wrote:
> The first include path is special in aclocal. For example it is the path
> for the --install option. Also, the first include is treated in a
> special way if it doesn't exists. This might be the case if there is the
> following construct:
> 
>   configure.ac: AC_CONFIG_MACRO_DIR([m4])
>   Makefile.am: ACLOCAL_AMFLAGS="-I m4"
> 
> If the package doesn't have local macros, the m4/ directory might not
> exist. aclocal will then just issue a warning instead of aborting the
> execution with a fatal error. See discussion here:
>   https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=565663
> 
> Don't use the "-I" option in aclocal. Instead use ACLOCAL_PATH to pass
> the system-wide include dirs.
> 
> As a side effect this should fix the use of $(ACLOCAL) alone. Up until
> now, $(ACLOCAL) didn't include the ACLOCAL_HOST_DIR system include path.
> 
> autoreconf will pass the "-I" options to every tool it runs. So move the
> argument to each individual tool except aclocal.
> 
> Signed-off-by: Michael Walle <michael@walle.cc>
> Signed-off-by: Heiko Thiery <heiko.thiery@gmail.com>
> ---
>  package/autoconf/autoconf.mk | 6 +++---
>  package/automake/automake.mk | 2 +-
>  2 files changed, 4 insertions(+), 4 deletions(-)
> 
> diff --git a/package/autoconf/autoconf.mk b/package/autoconf/autoconf.mk
> index e5f474c72d..336ac59b42 100644
> --- a/package/autoconf/autoconf.mk
> +++ b/package/autoconf/autoconf.mk
> @@ -21,6 +21,6 @@ HOST_AUTOCONF_DEPENDENCIES = host-m4 host-libtool
>  $(eval $(host-autotools-package))
>  
>  # variables used by other packages
> -AUTOCONF = $(HOST_DIR)/bin/autoconf
> -AUTOHEADER = $(HOST_DIR)/bin/autoheader
> -AUTORECONF = $(HOST_CONFIGURE_OPTS) ACLOCAL="$(ACLOCAL)" AUTOCONF="$(AUTOCONF)" AUTOHEADER="$(AUTOHEADER)" AUTOMAKE="$(AUTOMAKE)" AUTOPOINT=/bin/true $(HOST_DIR)/bin/autoreconf -f -i -I "$(ACLOCAL_DIR)" -I "$(ACLOCAL_HOST_DIR)"
> +AUTOCONF = $(HOST_DIR)/bin/autoconf -I "$(ACLOCAL_DIR)" -I "$(ACLOCAL_HOST_DIR)"
> +AUTOHEADER = $(HOST_DIR)/bin/autoheader -I "$(ACLOCAL_DIR)" -I "$(ACLOCAL_HOST_DIR)"
> +AUTORECONF = $(HOST_CONFIGURE_OPTS) ACLOCAL="$(ACLOCAL)" AUTOCONF="$(AUTOCONF)" AUTOHEADER="$(AUTOHEADER)" AUTOMAKE="$(AUTOMAKE)" AUTOPOINT=/bin/true $(HOST_DIR)/bin/autoreconf -f -i

 This will expand to:

... ACLOCAL="ACLOCAL_PATH="$(ACLOCAL_DIR):$(ACLOCAL_HOST_DIR)"
$(HOST_DIR)/bin/aclocal" AUTOCONF=...

(I've only done one level of expansion, but is shows my point.) So the quotation
marks are screwed up a little.

 It does work because the space is still quoted, and the quotes around the
ACLOCAL_PATH value are actually redundant (because spaces in directories are not
supported). But it looks a little weird.


 That said, I wonder: why don't we simply export ACLOCAL_PATH? I think with
that, we don't need the -I options in autoheader and autoconf any more, right?


 Regards,
 Arnout


> diff --git a/package/automake/automake.mk b/package/automake/automake.mk
> index 270337712e..b34a8eb717 100644
> --- a/package/automake/automake.mk
> +++ b/package/automake/automake.mk
> @@ -32,4 +32,4 @@ $(eval $(host-autotools-package))
>  # variables used by other packages
>  AUTOMAKE = $(HOST_DIR)/bin/automake
>  ACLOCAL_DIR = $(STAGING_DIR)/usr/share/aclocal
> -ACLOCAL = $(HOST_DIR)/bin/aclocal -I $(ACLOCAL_DIR)
> +ACLOCAL = ACLOCAL_PATH="$(ACLOCAL_DIR):$(ACLOCAL_HOST_DIR)" $(HOST_DIR)/bin/aclocal
>
Michael Walle Jan. 14, 2020, 10:52 a.m. UTC | #4
Hi Arnout,

Am 2020-01-14 00:37, schrieb Arnout Vandecappelle:
> On 12/12/2019 09:57, Michael Walle wrote:
>> The first include path is special in aclocal. For example it is the 
>> path
>> for the --install option. Also, the first include is treated in a
>> special way if it doesn't exists. This might be the case if there is 
>> the
>> following construct:
>> 
>>   configure.ac: AC_CONFIG_MACRO_DIR([m4])
>>   Makefile.am: ACLOCAL_AMFLAGS="-I m4"
>> 
>> If the package doesn't have local macros, the m4/ directory might not
>> exist. aclocal will then just issue a warning instead of aborting the
>> execution with a fatal error. See discussion here:
>>   https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=565663
>> 
>> Don't use the "-I" option in aclocal. Instead use ACLOCAL_PATH to pass
>> the system-wide include dirs.
>> 
>> As a side effect this should fix the use of $(ACLOCAL) alone. Up until
>> now, $(ACLOCAL) didn't include the ACLOCAL_HOST_DIR system include 
>> path.
>> 
>> autoreconf will pass the "-I" options to every tool it runs. So move 
>> the
>> argument to each individual tool except aclocal.
>> 
>> Signed-off-by: Michael Walle <michael@walle.cc>
>> Signed-off-by: Heiko Thiery <heiko.thiery@gmail.com>
>> ---
>>  package/autoconf/autoconf.mk | 6 +++---
>>  package/automake/automake.mk | 2 +-
>>  2 files changed, 4 insertions(+), 4 deletions(-)
>> 
>> diff --git a/package/autoconf/autoconf.mk 
>> b/package/autoconf/autoconf.mk
>> index e5f474c72d..336ac59b42 100644
>> --- a/package/autoconf/autoconf.mk
>> +++ b/package/autoconf/autoconf.mk
>> @@ -21,6 +21,6 @@ HOST_AUTOCONF_DEPENDENCIES = host-m4 host-libtool
>>  $(eval $(host-autotools-package))
>> 
>>  # variables used by other packages
>> -AUTOCONF = $(HOST_DIR)/bin/autoconf
>> -AUTOHEADER = $(HOST_DIR)/bin/autoheader
>> -AUTORECONF = $(HOST_CONFIGURE_OPTS) ACLOCAL="$(ACLOCAL)" 
>> AUTOCONF="$(AUTOCONF)" AUTOHEADER="$(AUTOHEADER)" 
>> AUTOMAKE="$(AUTOMAKE)" AUTOPOINT=/bin/true $(HOST_DIR)/bin/autoreconf 
>> -f -i -I "$(ACLOCAL_DIR)" -I "$(ACLOCAL_HOST_DIR)"
>> +AUTOCONF = $(HOST_DIR)/bin/autoconf -I "$(ACLOCAL_DIR)" -I 
>> "$(ACLOCAL_HOST_DIR)"
>> +AUTOHEADER = $(HOST_DIR)/bin/autoheader -I "$(ACLOCAL_DIR)" -I 
>> "$(ACLOCAL_HOST_DIR)"
>> +AUTORECONF = $(HOST_CONFIGURE_OPTS) ACLOCAL="$(ACLOCAL)" 
>> AUTOCONF="$(AUTOCONF)" AUTOHEADER="$(AUTOHEADER)" 
>> AUTOMAKE="$(AUTOMAKE)" AUTOPOINT=/bin/true $(HOST_DIR)/bin/autoreconf 
>> -f -i
> 
>  This will expand to:
> 
> ... ACLOCAL="ACLOCAL_PATH="$(ACLOCAL_DIR):$(ACLOCAL_HOST_DIR)"
> $(HOST_DIR)/bin/aclocal" AUTOCONF=...
> 
> (I've only done one level of expansion, but is shows my point.) So the 
> quotation
> marks are screwed up a little.

nice catch.

>  It does work because the space is still quoted, and the quotes around 
> the
> ACLOCAL_PATH value are actually redundant (because spaces in 
> directories are not
> supported). But it looks a little weird.
> 
> 
>  That said, I wonder: why don't we simply export ACLOCAL_PATH? I think 
> with
> that, we don't need the -I options in autoheader and autoconf any more, 
> right?

You mean something like that:

ACLOCAL = $(HOST_DIR)/bin/aclocal -I $(ACLOCAL_DIR)
ACLOCAL_PATH = $(ACLOCAL_DIR):$(ACLOCAL_HOST_DIR)

AUTORECONF = $(HOST_CONFIGURE_OPTS) ACLOCAL_PATH="$(ACLOCAL_PATH)" 
ACLOCAL="$(ACLOCAL)" AUTOCONF="$(AUTOCONF)" AUTOHEADER="$(AUTOHEADER)" 
AUTOMAKE="$(AUTOMAKE)" AUTOPOINT=/bin/true $(HOST_DIR)/bin/autoreconf -f 
-i

That won't work if $(ACLOCAL) is used alone. But from what I see that 
isn't
used for now. So we could give that a try.

Or rather something like that:
ACLOCAL = $(HOST_DIR)/bin/aclocal -I $(ACLOCAL_DIR)
ACLOCAL_PATH = $(ACLOCAL_DIR):$(ACLOCAL_HOST_DIR)
export ACLOCAL_PATH

AUTORECONF = $(HOST_CONFIGURE_OPTS) ACLOCAL="$(ACLOCAL)" 
AUTOCONF="$(AUTOCONF)" AUTOHEADER="$(AUTOHEADER)" AUTOMAKE="$(AUTOMAKE)" 
AUTOPOINT=/bin/true $(HOST_DIR)/bin/autoreconf -f -i

But that would clutter the variable ACLOCAL_PATH and no other package 
exports variables.

-michael
Michael Walle Jan. 14, 2020, 12:39 p.m. UTC | #5
Am 2020-01-14 11:52, schrieb Michael Walle:
> Hi Arnout,
> 
> Am 2020-01-14 00:37, schrieb Arnout Vandecappelle:
>> On 12/12/2019 09:57, Michael Walle wrote:
>>> The first include path is special in aclocal. For example it is the 
>>> path
>>> for the --install option. Also, the first include is treated in a
>>> special way if it doesn't exists. This might be the case if there is 
>>> the
>>> following construct:
>>> 
>>>   configure.ac: AC_CONFIG_MACRO_DIR([m4])
>>>   Makefile.am: ACLOCAL_AMFLAGS="-I m4"
>>> 
>>> If the package doesn't have local macros, the m4/ directory might not
>>> exist. aclocal will then just issue a warning instead of aborting the
>>> execution with a fatal error. See discussion here:
>>>   https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=565663
>>> 
>>> Don't use the "-I" option in aclocal. Instead use ACLOCAL_PATH to 
>>> pass
>>> the system-wide include dirs.
>>> 
>>> As a side effect this should fix the use of $(ACLOCAL) alone. Up 
>>> until
>>> now, $(ACLOCAL) didn't include the ACLOCAL_HOST_DIR system include 
>>> path.
>>> 
>>> autoreconf will pass the "-I" options to every tool it runs. So move 
>>> the
>>> argument to each individual tool except aclocal.
>>> 
>>> Signed-off-by: Michael Walle <michael@walle.cc>
>>> Signed-off-by: Heiko Thiery <heiko.thiery@gmail.com>
>>> ---
>>>  package/autoconf/autoconf.mk | 6 +++---
>>>  package/automake/automake.mk | 2 +-
>>>  2 files changed, 4 insertions(+), 4 deletions(-)
>>> 
>>> diff --git a/package/autoconf/autoconf.mk 
>>> b/package/autoconf/autoconf.mk
>>> index e5f474c72d..336ac59b42 100644
>>> --- a/package/autoconf/autoconf.mk
>>> +++ b/package/autoconf/autoconf.mk
>>> @@ -21,6 +21,6 @@ HOST_AUTOCONF_DEPENDENCIES = host-m4 host-libtool
>>>  $(eval $(host-autotools-package))
>>> 
>>>  # variables used by other packages
>>> -AUTOCONF = $(HOST_DIR)/bin/autoconf
>>> -AUTOHEADER = $(HOST_DIR)/bin/autoheader
>>> -AUTORECONF = $(HOST_CONFIGURE_OPTS) ACLOCAL="$(ACLOCAL)" 
>>> AUTOCONF="$(AUTOCONF)" AUTOHEADER="$(AUTOHEADER)" 
>>> AUTOMAKE="$(AUTOMAKE)" AUTOPOINT=/bin/true $(HOST_DIR)/bin/autoreconf 
>>> -f -i -I "$(ACLOCAL_DIR)" -I "$(ACLOCAL_HOST_DIR)"
>>> +AUTOCONF = $(HOST_DIR)/bin/autoconf -I "$(ACLOCAL_DIR)" -I 
>>> "$(ACLOCAL_HOST_DIR)"
>>> +AUTOHEADER = $(HOST_DIR)/bin/autoheader -I "$(ACLOCAL_DIR)" -I 
>>> "$(ACLOCAL_HOST_DIR)"
>>> +AUTORECONF = $(HOST_CONFIGURE_OPTS) ACLOCAL="$(ACLOCAL)" 
>>> AUTOCONF="$(AUTOCONF)" AUTOHEADER="$(AUTOHEADER)" 
>>> AUTOMAKE="$(AUTOMAKE)" AUTOPOINT=/bin/true $(HOST_DIR)/bin/autoreconf 
>>> -f -i
>> 
>>  This will expand to:
>> 
>> ... ACLOCAL="ACLOCAL_PATH="$(ACLOCAL_DIR):$(ACLOCAL_HOST_DIR)"
>> $(HOST_DIR)/bin/aclocal" AUTOCONF=...
>> 
>> (I've only done one level of expansion, but is shows my point.) So the 
>> quotation
>> marks are screwed up a little.
> 
> nice catch.
> 
>>  It does work because the space is still quoted, and the quotes around 
>> the
>> ACLOCAL_PATH value are actually redundant (because spaces in 
>> directories are not
>> supported). But it looks a little weird.
>> 
>> 
>>  That said, I wonder: why don't we simply export ACLOCAL_PATH? I think 
>> with
>> that, we don't need the -I options in autoheader and autoconf any 
>> more, right?
> 
> You mean something like that:
> 
> ACLOCAL = $(HOST_DIR)/bin/aclocal -I $(ACLOCAL_DIR)

whoops without the "-I $(ACLOCAL_DIR)" of course.

> ACLOCAL_PATH = $(ACLOCAL_DIR):$(ACLOCAL_HOST_DIR)
> 
> AUTORECONF = $(HOST_CONFIGURE_OPTS) ACLOCAL_PATH="$(ACLOCAL_PATH)"
> ACLOCAL="$(ACLOCAL)" AUTOCONF="$(AUTOCONF)" AUTOHEADER="$(AUTOHEADER)"
> AUTOMAKE="$(AUTOMAKE)" AUTOPOINT=/bin/true $(HOST_DIR)/bin/autoreconf
> -f -i
> 
> That won't work if $(ACLOCAL) is used alone. But from what I see that 
> isn't
> used for now. So we could give that a try.
> 
> Or rather something like that:
> ACLOCAL = $(HOST_DIR)/bin/aclocal -I $(ACLOCAL_DIR)

likewise.

> ACLOCAL_PATH = $(ACLOCAL_DIR):$(ACLOCAL_HOST_DIR)
> export ACLOCAL_PATH
> 
> AUTORECONF = $(HOST_CONFIGURE_OPTS) ACLOCAL="$(ACLOCAL)"
> AUTOCONF="$(AUTOCONF)" AUTOHEADER="$(AUTOHEADER)"
> AUTOMAKE="$(AUTOMAKE)" AUTOPOINT=/bin/true $(HOST_DIR)/bin/autoreconf
> -f -i
> 
> But that would clutter the variable ACLOCAL_PATH and no other package
> exports variables.


-michael
Arnout Vandecappelle Jan. 14, 2020, 11:27 p.m. UTC | #6
On 14/01/2020 11:52, Michael Walle wrote:
> Hi Arnout,
> 
> Am 2020-01-14 00:37, schrieb Arnout Vandecappelle:
[snip]
>>  That said, I wonder: why don't we simply export ACLOCAL_PATH? I think with
>> that, we don't need the -I options in autoheader and autoconf any more, right?
> 
> You mean something like that:
> 
> ACLOCAL = $(HOST_DIR)/bin/aclocal -I $(ACLOCAL_DIR)
> ACLOCAL_PATH = $(ACLOCAL_DIR):$(ACLOCAL_HOST_DIR)
> 
> AUTORECONF = $(HOST_CONFIGURE_OPTS) ACLOCAL_PATH="$(ACLOCAL_PATH)"
> ACLOCAL="$(ACLOCAL)" AUTOCONF="$(AUTOCONF)" AUTOHEADER="$(AUTOHEADER)"
> AUTOMAKE="$(AUTOMAKE)" AUTOPOINT=/bin/true $(HOST_DIR)/bin/autoreconf -f -i
> 
> That won't work if $(ACLOCAL) is used alone. But from what I see that isn't
> used for now. So we could give that a try.
> 
> Or rather something like that:
> ACLOCAL = $(HOST_DIR)/bin/aclocal -I $(ACLOCAL_DIR)
> ACLOCAL_PATH = $(ACLOCAL_DIR):$(ACLOCAL_HOST_DIR)
> export ACLOCAL_PATH
> 
> AUTORECONF = $(HOST_CONFIGURE_OPTS) ACLOCAL="$(ACLOCAL)" AUTOCONF="$(AUTOCONF)"
> AUTOHEADER="$(AUTOHEADER)" AUTOMAKE="$(AUTOMAKE)" AUTOPOINT=/bin/true
> $(HOST_DIR)/bin/autoreconf -f -i


 This second one is what I meant. But of course, this only works if autoconf and
automake don't need the explicit -I options.


> But that would clutter the variable ACLOCAL_PATH

 That can actually be considered a good thing. If the user has set ACLOCAL_PATH,
we really do want to override it (we don't want to rely on anything from the host).

> and no other package exports variables.

 Packages per se, indeed no, but this stuff can actually be considered part of
the infrastructure. They could just as well be defined in package/Makefile.in or
package/pkg-autotools.mk.

 A bunch of files are already exporting variables - particularly
package/pkg-download.mk.


 Regards,
 Arnout


> 
> -michael
diff mbox series

Patch

diff --git a/package/autoconf/autoconf.mk b/package/autoconf/autoconf.mk
index e5f474c72d..336ac59b42 100644
--- a/package/autoconf/autoconf.mk
+++ b/package/autoconf/autoconf.mk
@@ -21,6 +21,6 @@  HOST_AUTOCONF_DEPENDENCIES = host-m4 host-libtool
 $(eval $(host-autotools-package))
 
 # variables used by other packages
-AUTOCONF = $(HOST_DIR)/bin/autoconf
-AUTOHEADER = $(HOST_DIR)/bin/autoheader
-AUTORECONF = $(HOST_CONFIGURE_OPTS) ACLOCAL="$(ACLOCAL)" AUTOCONF="$(AUTOCONF)" AUTOHEADER="$(AUTOHEADER)" AUTOMAKE="$(AUTOMAKE)" AUTOPOINT=/bin/true $(HOST_DIR)/bin/autoreconf -f -i -I "$(ACLOCAL_DIR)" -I "$(ACLOCAL_HOST_DIR)"
+AUTOCONF = $(HOST_DIR)/bin/autoconf -I "$(ACLOCAL_DIR)" -I "$(ACLOCAL_HOST_DIR)"
+AUTOHEADER = $(HOST_DIR)/bin/autoheader -I "$(ACLOCAL_DIR)" -I "$(ACLOCAL_HOST_DIR)"
+AUTORECONF = $(HOST_CONFIGURE_OPTS) ACLOCAL="$(ACLOCAL)" AUTOCONF="$(AUTOCONF)" AUTOHEADER="$(AUTOHEADER)" AUTOMAKE="$(AUTOMAKE)" AUTOPOINT=/bin/true $(HOST_DIR)/bin/autoreconf -f -i
diff --git a/package/automake/automake.mk b/package/automake/automake.mk
index 270337712e..b34a8eb717 100644
--- a/package/automake/automake.mk
+++ b/package/automake/automake.mk
@@ -32,4 +32,4 @@  $(eval $(host-autotools-package))
 # variables used by other packages
 AUTOMAKE = $(HOST_DIR)/bin/automake
 ACLOCAL_DIR = $(STAGING_DIR)/usr/share/aclocal
-ACLOCAL = $(HOST_DIR)/bin/aclocal -I $(ACLOCAL_DIR)
+ACLOCAL = ACLOCAL_PATH="$(ACLOCAL_DIR):$(ACLOCAL_HOST_DIR)" $(HOST_DIR)/bin/aclocal