Bug 2323 - Incompatiblity with make 3.82
Summary: Incompatiblity with make 3.82
Status: RESOLVED FIXED
Alias: None
Product: Busybox
Classification: Unclassified
Component: Other (show other bugs)
Version: unspecified
Hardware: PC Linux
: P5 normal
Target Milestone: ---
Assignee: unassigned
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2010-08-03 17:00 UTC by Elias Pipping
Modified: 2010-08-22 07:33 UTC (History)
1 user (show)

See Also:
Host:
Target:
Build:


Attachments
make-3.82 fix (1017 bytes, patch)
2010-08-19 12:57 UTC, niro
Details

Note You need to log in before you can comment on or make changes to this bug.
Description Elias Pipping 2010-08-03 17:00:11 UTC
GNU make 3.82 has introduced some backward incompatibilities. As a result, busybox cannot be built with make 3.82. Here's what happens:

pipping@bogus ~/busybox-1.16.1 $ ~/make-3.82/make -j2 AR=x86_64-pc-linux-gnu-ar AS=x86_64-pc-linux-gnu-as CC=x86_64-pc-linux-gnu-gcc CPP='x86_64-pc-linux-gnu-gcc -E' LD=x86_64-pc-linux-gnu-gcc -nostdlib NM=x86_64-pc-linux-gnu-nm V=1 defconfig -n
Makefile:431: *** mixed implicit and normal rules.  Stop.
pipping@bogus ~/busybox-1.16.1 $

Here's what's supposed to happen:

pipping@bogus ~/busybox-1.16.1 $ ~/make-3.81/make -j2 AR=x86_64-pc-linux-gnu-ar AS=x86_64-pc-linux-gnu-as CC=x86_64-pc-linux-gnu-gcc CPP='x86_64-pc-linux-gnu-gcc -E' LD=x86_64-pc-linux-gnu-gcc -nostdlib NM=x86_64-pc-linux-gnu-nm V=1 defconfig -n
/home/pipping/make-3.81/make -f scripts/Makefile.build obj=scripts/basic
set -e;  echo '  gcc -Wp,-MD,scripts/basic/.fixdep.d  -Wall -Wstrict-prototypes -O2 -fomit-frame-pointer       -o scripts/basic/fixdep scripts/basic/fixdep.c  '; gcc -Wp,-MD,scripts/basic/.fixdep.d  -Wall -Wstrict-prototypes -O2 -fomit-frame-pointer       -o scripts/basic/fixdep scripts/basic/fixdep.c  ; scripts/basic/fixdep scripts/basic/.fixdep.d scripts/basic/fixdep 'gcc -Wp,-MD,scripts/basic/.fixdep.d  -Wall -Wstrict-prototypes -O2 -fomit-frame-pointer       -o scripts/basic/fixdep scripts/basic/fixdep.c  ' > scripts/basic/.fixdep.tmp; rm -f scripts/basic/.fixdep.d; mv -f scripts/basic/.fixdep.tmp scripts/basic/.fixdep.cmd
set -e;  echo '  gcc -Wp,-MD,scripts/basic/.split-include.d  -Wall -Wstrict-prototypes -O2 -fomit-frame-pointer       -o scripts/basic/split-include scripts/basic/split-include.c  '; gcc -Wp,-MD,scripts/basic/.split-include.d  -Wall -Wstrict-prototypes -O2 -fomit-frame-pointer       -o scripts/basic/split-include scripts/basic/split-include.c  ; scripts/basic/fixdep scripts/basic/.split-include.d scripts/basic/split-include 'gcc -Wp,-MD,scripts/basic/.split-include.d  -Wall -Wstrict-prototypes -O2 -fomit-frame-pointer       -o scripts/basic/split-include scripts/basic/split-include.c  ' > scripts/basic/.split-include.tmp; rm -f scripts/basic/.split-include.d; mv -f scripts/basic/.split-include.tmp scripts/basic/.split-include.cmd
set -e;  echo '  gcc -Wp,-MD,scripts/basic/.docproc.d  -Wall -Wstrict-prototypes -O2 -fomit-frame-pointer       -o scripts/basic/docproc scripts/basic/docproc.c  '; gcc -Wp,-MD,scripts/basic/.docproc.d  -Wall -Wstrict-prototypes -O2 -fomit-frame-pointer       -o scripts/basic/docproc scripts/basic/docproc.c  ; scripts/basic/fixdep scripts/basic/.docproc.d scripts/basic/docproc 'gcc -Wp,-MD,scripts/basic/.docproc.d  -Wall -Wstrict-prototypes -O2 -fomit-frame-pointer       -o scripts/basic/docproc scripts/basic/docproc.c  ' > scripts/basic/.docproc.tmp; rm -f scripts/basic/.docproc.d; mv -f scripts/basic/.docproc.tmp scripts/basic/.docproc.cmd
:
mkdir -p include
/home/pipping/make-3.81/make -f scripts/Makefile.build obj=scripts/kconfig defconfig
set -e;  echo '  gcc -Wp,-MD,scripts/kconfig/.conf.o.d  -Wall -Wstrict-prototypes -O2 -fomit-frame-pointer       -c -o scripts/kconfig/conf.o scripts/kconfig/conf.c'; gcc -Wp,-MD,scripts/kconfig/.conf.o.d  -Wall -Wstrict-prototypes -O2 -fomit-frame-pointer       -c -o scripts/kconfig/conf.o scripts/kconfig/conf.c; scripts/basic/fixdep scripts/kconfig/.conf.o.d scripts/kconfig/conf.o 'gcc -Wp,-MD,scripts/kconfig/.conf.o.d  -Wall -Wstrict-prototypes -O2 -fomit-frame-pointer       -c -o scripts/kconfig/conf.o scripts/kconfig/conf.c' > scripts/kconfig/.conf.o.tmp; rm -f scripts/kconfig/.conf.o.d; mv -f scripts/kconfig/.conf.o.tmp scripts/kconfig/.conf.o.cmd
set -e;  echo '  gcc -Wp,-MD,scripts/kconfig/.kxgettext.o.d  -Wall -Wstrict-prototypes -O2 -fomit-frame-pointer       -c -o scripts/kconfig/kxgettext.o scripts/kconfig/kxgettext.c'; gcc -Wp,-MD,scripts/kconfig/.kxgettext.o.d  -Wall -Wstrict-prototypes -O2 -fomit-frame-pointer       -c -o scripts/kconfig/kxgettext.o scripts/kconfig/kxgettext.c; scripts/basic/fixdep scripts/kconfig/.kxgettext.o.d scripts/kconfig/kxgettext.o 'gcc -Wp,-MD,scripts/kconfig/.kxgettext.o.d  -Wall -Wstrict-prototypes -O2 -fomit-frame-pointer       -c -o scripts/kconfig/kxgettext.o scripts/kconfig/kxgettext.c' > scripts/kconfig/.kxgettext.o.tmp; rm -f scripts/kconfig/.kxgettext.o.d; mv -f scripts/kconfig/.kxgettext.o.tmp scripts/kconfig/.kxgettext.o.cmd
set -e;  echo '  gcc -Wp,-MD,scripts/kconfig/.mconf.o.d  -Wall -Wstrict-prototypes -O2 -fomit-frame-pointer       -c -o scripts/kconfig/mconf.o scripts/kconfig/mconf.c'; gcc -Wp,-MD,scripts/kconfig/.mconf.o.d  -Wall -Wstrict-prototypes -O2 -fomit-frame-pointer       -c -o scripts/kconfig/mconf.o scripts/kconfig/mconf.c; scripts/basic/fixdep scripts/kconfig/.mconf.o.d scripts/kconfig/mconf.o 'gcc -Wp,-MD,scripts/kconfig/.mconf.o.d  -Wall -Wstrict-prototypes -O2 -fomit-frame-pointer       -c -o scripts/kconfig/mconf.o scripts/kconfig/mconf.c' > scripts/kconfig/.mconf.o.tmp; rm -f scripts/kconfig/.mconf.o.d; mv -f scripts/kconfig/.mconf.o.tmp scripts/kconfig/.mconf.o.cmd
echo '  cat scripts/kconfig/zconf.tab.c_shipped > scripts/kconfig/zconf.tab.c'; cat scripts/kconfig/zconf.tab.c_shipped > scripts/kconfig/zconf.tab.c
echo '  cat scripts/kconfig/lex.zconf.c_shipped > scripts/kconfig/lex.zconf.c'; cat scripts/kconfig/lex.zconf.c_shipped > scripts/kconfig/lex.zconf.c
echo '  cat scripts/kconfig/zconf.hash.c_shipped > scripts/kconfig/zconf.hash.c'; cat scripts/kconfig/zconf.hash.c_shipped > scripts/kconfig/zconf.hash.c
set -e;  echo '  gcc -Wp,-MD,scripts/kconfig/.zconf.tab.o.d  -Wall -Wstrict-prototypes -O2 -fomit-frame-pointer      -Iscripts/kconfig -c -o scripts/kconfig/zconf.tab.o scripts/kconfig/zconf.tab.c'; gcc -Wp,-MD,scripts/kconfig/.zconf.tab.o.d  -Wall -Wstrict-prototypes -O2 -fomit-frame-pointer      -Iscripts/kconfig -c -o scripts/kconfig/zconf.tab.o scripts/kconfig/zconf.tab.c; scripts/basic/fixdep scripts/kconfig/.zconf.tab.o.d scripts/kconfig/zconf.tab.o 'gcc -Wp,-MD,scripts/kconfig/.zconf.tab.o.d  -Wall -Wstrict-prototypes -O2 -fomit-frame-pointer      -Iscripts/kconfig -c -o scripts/kconfig/zconf.tab.o scripts/kconfig/zconf.tab.c' > scripts/kconfig/.zconf.tab.o.tmp; rm -f scripts/kconfig/.zconf.tab.o.d; mv -f scripts/kconfig/.zconf.tab.o.tmp scripts/kconfig/.zconf.tab.o.cmd
set -e;  echo '  gcc  -o scripts/kconfig/conf scripts/kconfig/conf.o scripts/kconfig/zconf.tab.o  '; gcc  -o scripts/kconfig/conf scripts/kconfig/conf.o scripts/kconfig/zconf.tab.o  ; echo 'cmd_scripts/kconfig/conf := gcc  -o scripts/kconfig/conf scripts/kconfig/conf.o scripts/kconfig/zconf.tab.o  ' > scripts/kconfig/.conf.cmd
scripts/kconfig/conf -d Config.in
true && sleep 1
/home/pipping/make-3.81/make -C /home/pipping/busybox-1.16.1 KBUILD_SRC= .kernelrelease
rm -f .kernelrelease
echo 1.16.1 > .kernelrelease
pipping@bogus ~/busybox-1.16.1 $ 

This happens with busybox 1.16.1, 1.17.1 and today's snapshot (August 3rd of '10).
Comment 1 niro 2010-08-19 12:57:05 UTC
Created attachment 2359 [details]
make-3.82 fix
Comment 2 niro 2010-08-19 12:59:25 UTC
the patch works for me; compilation of busybox-1.17.1 with default config was successful
Comment 3 Denys Vlasenko 2010-08-22 07:31:55 UTC
Thanks! Applied to git and added to hotfixes:

http://busybox.net/downloads/fixes-1.17.1/busybox-1.17.1-make.patch