makefile 语法_makefile define用法_nis makefile 语法(6)

电脑杂谈  发布时间:2017-04-11 03:08:44  来源:网络整理

例子:

#arch/i386/Makefile

cflags-y = $(callcc-option,-march=pentium-mmx,-march=i586)

在上面的例子中,如果支持$(CC),那么cflags-y将会被赋予-march=pentium-mmx选项的,否则就赋予-march=i586选项的。对于cc-option,第二个参数是可选的。如果第二参数被省略了并且第一个选项不被支持,那么cflags-y将会被置为空。

注意:cc-option使用KBUILD_CFLAGS作为$(CC)的选项。

cc-option-yn

cc-option-yn用来检查gcc是否支持一个给定的选项。如果支持就返回‘y’,否则就返回‘n’。

例子:

#arch/ppc/Makefile

biarch:= $(call cc-option-yn, -m32)

aflags-$(biarch) = -a32

cflags-$(biarch) = -m32

在上面的例子中,如果$(CC)支持-m32选项,那么$(biarch)的将会被置为y。当$(biarch)的等于‘y’,那么扩展的变量$(aflags-y)和$(cflags-y)将会分别等于-a32和-m32.

注意:cc-option-yn使用KBUILD_CFLAGS作为$(CC)的选项。

cc-option-align

版本号大于3.0的gcc为了指定函数以及循环的对齐方式,改变了选项的类型。当为对齐选项使用前缀时,$(cc-option-align)将选择合适的前缀:

gcc< 3.00

cc-option-align= -malign

gcc>= 3.00

cc-option-align= -falign

例子:

KBUILD_CFLAGS= $(cc-option-align)-functions=4

在上面的例子中,选项-falign-functions=4用于gcc >=3.00的情况。对于gcc < 3.00的情况,使用 -malign-functions=4 选项.

注意:cc-option-align使用KBUILD_CFLAGS作为$(CC) 的选项

cc-version

cc-version返回一个用数字表示的$(CC)编译器版本。数字版本的式是<major><minor>,这两部分都是数字。比如gcc 3.41将会返回0341.

当一个特定的$(CC)版本在某个地方是错误的,cc-version就会非常有用。比如尽管cc-version选项会被gcc给接受,但是-mregparm=3在某些gcc版本中还是不会成立。

例子:

#arch/i386/Makefile

cflags-y = $(shell \

if [ $(call cc-version) -ge 0300 ] ;then \

echo "-mregparm=3"; fi ;)

在上面的例子中,-mregparm=3只有当gcc版本大于等于3.0的时候才成立。

cc-ifversion

cc-ifversion用来测试$(CC)的版本,并且当版本表达式的为真的时候,它的等于最后一个参数的。

例子:

#fs/reiserfs/Makefile

ccflags-y := $(call cc-ifversion, -lt,0402, -O1)


本文来自电脑杂谈,转载请注明本文网址:
https://www.pc-fly.com/a/jisuanjixue/article-40628-6.html

相关阅读
    发表评论  请自觉遵守互联网相关的政策法规,严禁发布、暴力、反动的言论

    热点图片
    拼命载入中...