Output from Build Tools?

Jeffrey Walton noloader at gmail.com
Sat Mar 2 02:43:24 UTC 2013


On Fri, Mar 1, 2013 at 2:53 PM, Markos Chandras <hwoarang at gentoo.org> wrote:
> On 1 March 2013 19:42, Jeffrey Walton <noloader at gmail.com> wrote:
>> On Fri, Mar 1, 2013 at 2:33 PM, Markos Chandras <hwoarang at gentoo.org> wrote:
>>> On 1 March 2013 19:01, Jeffrey Walton <noloader at gmail.com> wrote:
>>>>
>>>> ...
>
> It's called Kbuild. The same build system is also used in the Linux
> kernel and other opensource projects. Look here[1] for some additional
> information (also available in your local kernel sources) and the
> extra/config/README.uClibc file in your uClibc tree.
>
> [1] https://www.kernel.org/doc/Documentation/kbuild/kconfig-language.txt
Thanks again Markos. So it appears kconfig/kbuild is driving the `make
menuconfig` process.

How/where is Rules.mak used? I've made some changes to base
BUILD_CFLAGS, but I don't see the changes being picked up or
propagated (even after a `make clean`).

Is it even being used? I see a lot of hard coded GCC stuff (for
example, check-gcc-var and check_gcc), but nothing for ICC. With ICC,
I would expect to see, for example, -wd68, -wd186, -wd279, -wd327, and
-wd1011.

I also noticed the following (nd some others) are not producing
expected results under Clang. Clang barfs out a warning about an
ignored option:

  $(eval $(call check-gcc-var,-fno-tree-loop-optimize))
  OPTIMIZATION += $(CFLAG_-fno-tree-loop-optimize)

Perhaps that should be wrapped in a check that verifies the compiler,
and only performs the `eval` after verifying $(CC) is GCC or ICC. In
case you are interested, here are the checks I use for various the
compilers my C++ code supports (I rarely do anything in C unless I
have to):

GCC_COMPILER = $(shell $(CXX) -v 2>&1 | $(EGREP) -i -c '^gcc version')
INTEL_COMPILER = $(shell $(CXX) --version 2>&1 | $(EGREP) -i -c '\(icc\)')
COMEAU_COMPILER = $(shell $(CXX) --version 2>&1 | $(EGREP) -i -c 'comeau')
SUN_COMPILER = $(shell $(CXX) -V 2>&1 | $(EGREP) -i -c 'cc: sun')
CLANG_COMPILER = $(shell $(CXX) --version 2>&1 | $(EGREP) -i -c "clang version")

Later, you simply do one of these (no insult intended):

ifeq ($(INTEL_COMPILER),1)
  MY_CFLAGS += -pipe -std=XXX -Wall -wd1011
  MY_CXXFLAGS += -pipe -std=XXX -Wall -wd1011
endif

Jeff


More information about the uClibc mailing list