Hi,
Vineet Gupta wrote,
On 03/01/2017 10:57 AM, Anton Kolesov wrote:
> That means for building of our toolchain
we'll need to have separately stored
> "defconfigs" in some form. Let's see what Anton says on that :)
But why is that - as long as buildroot (or other build systems) pass the right cpu
flags - why do you need a seperate config ?
> And regardless of what mr Anton says having
off-the-tree defconfigs is not
> the best idea because with time options will go in and out and occasionally
> we'll have outdated defconfigs.
The whole out-of-tree defconfig approach is nonsense - lets not discuss it !
> [AK] Not specifying architecture via uClibc config file is good for me - I
> wanted this long ago, since I never understood why current approach was used in
> the first place.
I am not really sure I understand the discussion completely.
I think we discuss two points here.
Point 1.:
Rules.mak and some default CFLAGS/LDFLAGS passed to the compile and
linking of code. I favour removing any specific -march/-mcpu/-mtune
stuff, as we have done in the past for ARM/MIPS.
So if ARC people like to remove this:
ifeq ($(TARGET_ARCH),arc)
CPU_CFLAGS-$(CONFIG_ARC_CPU_700) += -mA7
CPU_CFLAGS-$(CONFIG_ARC_CPU_HS) += -mcpu=archs
CPU_LDFLAGS-y += $(CPU_CFLAGS) -marclinux
endif
I would say, yes, good thing. The toolchain defaults should be
correctly set, no need to overwrite it inside uClibc-ng buildsystem.
Point 2.:
The files in extra/Configs/defconfigs/ and its use-cases.
I haven't touched or used any files here, because most of them just
contain TARGET_<arch>=y
I would rather vote either to completely remove this directory or
use it in the same way for all architectures.
At the moment only ARC, OR1K and NDS32 use full defconfigs:
wc -l uClibc-ng-git/extra/Configs/defconfigs/*/*
1 uClibc-ng-git/extra/Configs/defconfigs/alpha/defconfig
39 uClibc-ng-git/extra/Configs/defconfigs/arc/arcv2_defconfig
38 uClibc-ng-git/extra/Configs/defconfigs/arc/defconfig
38 uClibc-ng-git/extra/Configs/defconfigs/arc/tb10x_defconfig
1 uClibc-ng-git/extra/Configs/defconfigs/arm/defconfig
1 uClibc-ng-git/extra/Configs/defconfigs/avr32/defconfig
1 uClibc-ng-git/extra/Configs/defconfigs/bfin/defconfig
1 uClibc-ng-git/extra/Configs/defconfigs/cris/defconfig
1 uClibc-ng-git/extra/Configs/defconfigs/frv/defconfig
1 uClibc-ng-git/extra/Configs/defconfigs/h8300/defconfig
1 uClibc-ng-git/extra/Configs/defconfigs/hppa/defconfig
1 uClibc-ng-git/extra/Configs/defconfigs/i386/defconfig
1 uClibc-ng-git/extra/Configs/defconfigs/ia64/defconfig
1 uClibc-ng-git/extra/Configs/defconfigs/m68k/defconfig
1 uClibc-ng-git/extra/Configs/defconfigs/metag/defconfig
1 uClibc-ng-git/extra/Configs/defconfigs/microblaze/defconfig
1 uClibc-ng-git/extra/Configs/defconfigs/mips/defconfig
167 uClibc-ng-git/extra/Configs/defconfigs/nds32/defconfig
1 uClibc-ng-git/extra/Configs/defconfigs/nios2/defconfig
236 uClibc-ng-git/extra/Configs/defconfigs/or1k/defconfig
1 uClibc-ng-git/extra/Configs/defconfigs/powerpc/defconfig
1 uClibc-ng-git/extra/Configs/defconfigs/sh/defconfig
1 uClibc-ng-git/extra/Configs/defconfigs/sparc/defconfig
1 uClibc-ng-git/extra/Configs/defconfigs/x86_64/defconfig
537 total
I think only the ARC defconfigs are really used anywhere.
All projects I know of, using uClibc-ng as a C library to create a
cross-toolchain are using some kind of own defconfigs and generated
fragments.
In OpenADK I have some target/<arch>/uclibc-ng.config for every
architecture with sane defaults to regular run and test uClibc-ng
based systems in emulators or on real hardware.
This is used in embedded-test to do regression testing.
Buildroot has some minimal defconfig and a developer can enable or
disable some features (RPC, WCHAR, Locales, ..).
I think a developer can also supply his own uClibc-ng config
fragment.
OpenWrt/LEDE use some own defconfigs.
To have a good compatibility for a lot of applications the ARC
Synopsis toolchains might use the existing Buildroot defaults, which
allows to build a lot of software packages. We have seen before the
last release, a lot of packages fail to compile, because the
internal buildroot toolchain uses more features than the external
Synopsis toolchain. (UCLIBC_HAS_GETPT, ..)
If the default creates to big systems, Synopsis can use minimal
configs and fix any autobuild issues ;)
I think any external toolchain builders should create their own
config and the uClibc-ng project should not provide any defconfigs
anymore. Indeed when someone just use Kconfig defaults he/she should always
end with a known to work toolchain.
I still think we have too much different config possibilities and if
we find some, which can be removed, I always vote for it.
Best regards
Waldemar