[RFC] Get rid of SUBARCH
This series is an attempt to remove the SUBARCH make parameter. It as introduced at the times of Linux 2.5 for UML to tell the UML build system what the real architecture is. But we actually don't need SUBARCH, we can store this information in the .config file. i386_defconfig will produce a kernel for x86, and x86_64_defconfig for x86_64. There is no need to specify SUBARCH. With this patchset applied you can build UML always with "make linux ARCH=um" and it will produce the an image for the architecture specified in your .config. Currenlty "make linux ARCH=um" will alter your .config to match the detected SUBARCH whith sucks and causes problems on automated build systems. The series touches also m68k, sh, mips and unicore32. These architectures magically select a cross compiler if ARCH != SUBARCH. Do really need that behavior? [PATCH 1/8] um: Create defconfigs for i386 and x86_64 [PATCH 2/8] um: Do not use SUBARCH [PATCH 3/8] um: Remove old defconfig [PATCH 4/8] m68k: Do not use SUBARCH [PATCH 5/8] sh: Do not use SUBARCH [PATCH 6/8] mips: Do not use SUBARCH [PATCH 7/8] unicore32: Do not use SUBARCH [PATCH 8/8] Makefile: Remove SUBARCH Thanks, //richard -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
Re: [RFC] Get rid of SUBARCH
On Wed, Aug 21, 2013 at 10:19 AM, Richard Weinberger wrote: > This series is an attempt to remove the SUBARCH make parameter. > It as introduced at the times of Linux 2.5 for UML to tell the UML > build system what the real architecture is. > > But we actually don't need SUBARCH, we can store this information > in the .config file. Haha, now you have OS_ARCH (shouldn't that be called HOST_ARCH?) instead, which is available only for UM? > The series touches also m68k, sh, mips and unicore32. > These architectures magically select a cross compiler if ARCH != SUBARCH. > Do really need that behavior? This does remove functionality. It allows to build a kernel using e.g. "make ARCH=m68k". Perhaps this can be moved to generic code? Most (not all!) cross-toolchains are called $ARCH-{unknown-,}linux{,-gnu}. Exceptions are e.g. am33_2.0-linux and bfin-uclinux. > [PATCH 1/8] um: Create defconfigs for i386 and x86_64 > [PATCH 3/8] um: Remove old defconfig Why not merge these two, so git copy/rename detection will show only the real changes? Gr{oetje,eeting}s, Geert -- Geert Uytterhoeven -- There's lots of Linux beyond ia32 -- ge...@linux-m68k.org In personal conversations with technical people, I call myself a hacker. But when I'm talking to journalists I just say "programmer" or something like that. -- Linus Torvalds -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
Re: [RFC] Get rid of SUBARCH
Am 21.08.2013 14:07, schrieb Geert Uytterhoeven: > On Wed, Aug 21, 2013 at 10:19 AM, Richard Weinberger wrote: >> This series is an attempt to remove the SUBARCH make parameter. >> It as introduced at the times of Linux 2.5 for UML to tell the UML >> build system what the real architecture is. >> >> But we actually don't need SUBARCH, we can store this information >> in the .config file. > > Haha, now you have OS_ARCH (shouldn't that be called HOST_ARCH?) instead, > which is available only for UM? We have already OS (which is always "Linux"), so OS_ARCH is IMHO a good choice. UML always needs to know what the underlying arch is. OS_ARCH is not only visible to arch/um/ because of that code in the global Makefile: # UML needs a little special treatment here. It wants to use the host # toolchain, so needs $(SUBARCH) passed to checkstack.pl. Everyone # else wants $(ARCH), including people doing cross-builds, which means # that $(SUBARCH) doesn't work here. ifeq ($(ARCH), um) CHECKSTACK_ARCH := $(SUBARCH) else CHECKSTACK_ARCH := $(ARCH) endif scripts/tags.sh also needs some work. V2 will contain a patch for that. >> The series touches also m68k, sh, mips and unicore32. >> These architectures magically select a cross compiler if ARCH != SUBARCH. >> Do really need that behavior? > > This does remove functionality. > It allows to build a kernel using e.g. "make ARCH=m68k". If this functionality is expected and has users I'll happily keep that. > Perhaps this can be moved to generic code? Most (not all!) cross-toolchains > are called $ARCH-{unknown-,}linux{,-gnu}. > Exceptions are e.g. am33_2.0-linux and bfin-uclinux. Sounds good. >> [PATCH 1/8] um: Create defconfigs for i386 and x86_64 >> [PATCH 3/8] um: Remove old defconfig > > Why not merge these two, so git copy/rename detection will show only the real > changes? Will do. Thanks, //richard -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
Re: [RFC] Get rid of SUBARCH
On Wed, 21 Aug 2013, Richard Weinberger wrote: > The series touches also m68k, sh, mips and unicore32. > These architectures magically select a cross compiler if ARCH != SUBARCH. > Do really need that behavior? Not precisely that, but it’s very common in m68k land to just cross-build kernels with $ make ARCH=m68k menuconfig $ make ARCH=m68k Maybe a generalising of that feature, and making it independent of SUBARCH (which can then die)? bye, //mirabilos -- [16:04:33] bkix: "veni vidi violini" [16:04:45] bkix: "ich kam, sah und vergeigte"... -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
Re: [RFC] Get rid of SUBARCH
If ARCH doesn't match uname for some definition of match? Thorsten Glaser wrote: >On Wed, 21 Aug 2013, Richard Weinberger wrote: > >> The series touches also m68k, sh, mips and unicore32. >> These architectures magically select a cross compiler if ARCH != >SUBARCH. >> Do really need that behavior? > >Not precisely that, but it’s very common in m68k land >to just cross-build kernels with > >$ make ARCH=m68k menuconfig >$ make ARCH=m68k > >Maybe a generalising of that feature, and making it >independent of SUBARCH (which can then die)? > >bye, >//mirabilos -- Sent from my mobile phone. Please excuse brevity and lack of formatting. -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
Re: [RFC] Get rid of SUBARCH
On 08/21/2013 07:07:33 AM, Geert Uytterhoeven wrote: On Wed, Aug 21, 2013 at 10:19 AM, Richard Weinberger wrote: > This series is an attempt to remove the SUBARCH make parameter. > It as introduced at the times of Linux 2.5 for UML to tell the UML > build system what the real architecture is. > > But we actually don't need SUBARCH, we can store this information > in the .config file. Haha, now you have OS_ARCH (shouldn't that be called HOST_ARCH?) instead, which is available only for UM? > The series touches also m68k, sh, mips and unicore32. > These architectures magically select a cross compiler if ARCH != SUBARCH. > Do really need that behavior? This does remove functionality. It allows to build a kernel using e.g. "make ARCH=m68k". make ARCH=m68k CROSS_COMPILE=m68k- make ARCH=arm CROSS_COMPILE=armv5l- make ARCH=sparc CROSS_COMPILE=sparc- make ARCH=ppc CROSS_COMPILE=powerpc- make ARCH=sh CROSS_COMPILE=sh4- make ARCH=mips CROSS_COMPILE=mipsel- make ARCH=x86 CROSS_COMPILE=i686- make ARCH=alpha CROSS_COMPILE=alpha- Works the same way on all the targets I've tried so far. You specify the architecture, you specify the cross compiler prefix, you feed it a config file, you build. (If a target supplies its own default cross compiler prefix I just have to override it with what mine's called anyway...) Perhaps this can be moved to generic code? Most (not all!) cross-toolchains are called $ARCH-{unknown-,}linux{,-gnu}. Exceptions are e.g. am33_2.0-linux and bfin-uclinux. The linaro toolchain is arm-linux-gnueabihf- and the one on kernel.org is arm-unknown-linux-gnueabi- and the one I build is armv5l- (because the FSF's $ARCH-unknown-gnu-format-tuple-all-hail-stallman-gnu-gnu-gnu-dammit-gcc is just nuts: why would I say -linux- in a linux-to-linux toolchain? Do windows toolchains say -windows-?) Other toolchain sources use other prefixes (-unknown- is often -$VENDORNAME-), and then of course there's llvm... which is why you specify CROSS_COMPILE= on the make command line. Rob-- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
Re: [RFC] Get rid of SUBARCH
> > > The series touches also m68k, sh, mips and unicore32. > > These architectures magically select a cross compiler if ARCH != SUBARCH. > > Do really need that behavior? > > This does remove functionality. > It allows to build a kernel using e.g. "make ARCH=m68k". > > Perhaps this can be moved to generic code? Most (not all!) cross-toolchains > are called $ARCH-{unknown-,}linux{,-gnu}. > Exceptions are e.g. am33_2.0-linux and bfin-uclinux. Today you can specify CROSS_COMPILE in Kconfig. With this we should be able to remove these hacks. Sam -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
Re: [RFC] Get rid of SUBARCH
On Wed, Aug 21, 2013 at 9:51 PM, Sam Ravnborg wrote: >> > The series touches also m68k, sh, mips and unicore32. >> > These architectures magically select a cross compiler if ARCH != SUBARCH. >> > Do really need that behavior? >> >> This does remove functionality. >> It allows to build a kernel using e.g. "make ARCH=m68k". >> >> Perhaps this can be moved to generic code? Most (not all!) cross-toolchains >> are called $ARCH-{unknown-,}linux{,-gnu}. >> Exceptions are e.g. am33_2.0-linux and bfin-uclinux. > > Today you can specify CROSS_COMPILE in Kconfig. > With this we should be able to remove these hacks. The correct CROSS_COMPILE value depends on the host environment, not on the target configuration. Gr{oetje,eeting}s, Geert -- Geert Uytterhoeven -- There's lots of Linux beyond ia32 -- ge...@linux-m68k.org In personal conversations with technical people, I call myself a hacker. But when I'm talking to journalists I just say "programmer" or something like that. -- Linus Torvalds -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
Re: [RFC] Get rid of SUBARCH
On 08/22/2013 07:58:26 AM, Geert Uytterhoeven wrote: On Wed, Aug 21, 2013 at 9:51 PM, Sam Ravnborg wrote: >> > The series touches also m68k, sh, mips and unicore32. >> > These architectures magically select a cross compiler if ARCH != SUBARCH. >> > Do really need that behavior? >> >> This does remove functionality. >> It allows to build a kernel using e.g. "make ARCH=m68k". >> >> Perhaps this can be moved to generic code? Most (not all!) cross-toolchains >> are called $ARCH-{unknown-,}linux{,-gnu}. >> Exceptions are e.g. am33_2.0-linux and bfin-uclinux. > > Today you can specify CROSS_COMPILE in Kconfig. > With this we should be able to remove these hacks. The correct CROSS_COMPILE value depends on the host environment, not on the target configuration. Actually it depends on _both_. Rob-- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
Re: [RFC] Get rid of SUBARCH
On 08/22/2013 01:41 PM, Rob Landley wrote: On 08/22/2013 07:58:26 AM, Geert Uytterhoeven wrote: On Wed, Aug 21, 2013 at 9:51 PM, Sam Ravnborg wrote: >> > The series touches also m68k, sh, mips and unicore32. >> > These architectures magically select a cross compiler if ARCH != SUBARCH. >> > Do really need that behavior? >> >> This does remove functionality. >> It allows to build a kernel using e.g. "make ARCH=m68k". >> >> Perhaps this can be moved to generic code? Most (not all!) cross-toolchains >> are called $ARCH-{unknown-,}linux{,-gnu}. >> Exceptions are e.g. am33_2.0-linux and bfin-uclinux. > > Today you can specify CROSS_COMPILE in Kconfig. > With this we should be able to remove these hacks. The correct CROSS_COMPILE value depends on the host environment, not on the target configuration. Actually it depends on _both_. I think the important issue is not the exact dependencies of the value of CROSS_COMPILE, but rather that it varies enough that automatically choosing a value based on SUBARCH often gives the wrong result. Removing SUBARCH and setting CROSS_COMPILE either from the make command line (or environment) or the config file, is a good idea because it simplifies the build system, makes things clearer, and yields more predictable results. David Daney -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
Re: [RFC] Get rid of SUBARCH
On 08/22/2013 03:55:20 PM, David Daney wrote: On 08/22/2013 01:41 PM, Rob Landley wrote: On 08/22/2013 07:58:26 AM, Geert Uytterhoeven wrote: On Wed, Aug 21, 2013 at 9:51 PM, Sam Ravnborg wrote: >> > The series touches also m68k, sh, mips and unicore32. >> > These architectures magically select a cross compiler if ARCH != SUBARCH. >> > Do really need that behavior? >> >> This does remove functionality. >> It allows to build a kernel using e.g. "make ARCH=m68k". >> >> Perhaps this can be moved to generic code? Most (not all!) cross-toolchains >> are called $ARCH-{unknown-,}linux{,-gnu}. >> Exceptions are e.g. am33_2.0-linux and bfin-uclinux. > > Today you can specify CROSS_COMPILE in Kconfig. > With this we should be able to remove these hacks. The correct CROSS_COMPILE value depends on the host environment, not on the target configuration. Actually it depends on _both_. I think the important issue is not the exact dependencies of the value of CROSS_COMPILE, but rather that it varies enough that automatically choosing a value based on SUBARCH often gives the wrong result. Removing SUBARCH and setting CROSS_COMPILE either from the make command line (or environment) or the config file, is a good idea because it simplifies the build system, makes things clearer, and yields more predictable results. David Daney Agreed. Expecting the build to guess the right $CROSS_COMPILE is like expecting it to guess the right $PATH. It should be specified, not heuristically probed. Rob-- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/