Ignore:
Timestamp:
Jan 1, 2014, 11:59:50 PM (12 years ago)
Author:
bird
Message:

kBuild objects: Implemented the special variable accessor [@super] and [@self].

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/kmk/testcase-kBuild-define.kmk

    r2718 r2720  
    2626#DEPTH = ../..
    2727#include $(PATH_KBUILD)/header.kmk
     28
     29##
     30# Test if $($1) == $2 and raises an error if it isn't.
     31#
     32# @param   1   Something to apply '$' to.
     33# @param   2   The expected value.
     34TEST_EQ = $(if-expr "$($1)" == "$2",,$(error $1 is '$($1)' not '$2'))
    2835
    2936if 0
     
    97104$(if-expr "$(OutsideMod_OTHER)"          == "outside-value",,$(error OutsideMod_OTHER is '$(OutsideMod_OTHER)' not 'outside-value'))
    98105
     106# Test #4
     107kBuild-define-target SpecialBase
     108_SOURCES = file1.c file2.c
     109_DEFS.win.x86 = XXX YYY
     110_DEFS.win.amd64 = $(filter-out YYY,$([@self]_DEFS.win.x86))
     111# Unnecessary use of [@self].
     112[@self]_LIBS = MyLib
     113kBuild-endef-target
     114
     115kBuild-define-target SpecialChild extending SpecialBase
     116_SOURCES = file1-child.c $(filter-out file1.c,$([@super]_SOURCES))
     117# Rare use of [@super].
     118[@super]_SET_BY_CHILD = 42
     119kBuild-endef-target
     120
     121$(call TEST_EQ,[target@SpecialBase]_LIBS,MyLib)
     122$(call TEST_EQ,SpecialBase_LIBS,MyLib)
     123
     124$(call TEST_EQ,[target@SpecialBase]_SET_BY_CHILD,42)
     125$(call TEST_EQ,SpecialBase_SET_BY_CHILD,42)
     126$(call TEST_EQ,[target@SpecialChild]_SET_BY_CHILD,42)
     127#$(call TEST_EQ,SpecialChild_SET_BY_CHILD,42) ## @todo
     128
     129$(call TEST_EQ,[target@SpecialBase]_DEFS.win.x86,XXX YYY)
     130$(call TEST_EQ,[target@SpecialBase]_DEFS.win.amd64,XXX)
     131$(call TEST_EQ,SpecialBase_DEFS.win.amd64,XXX)
     132$(call TEST_EQ,[target@SpecialChild]_DEFS.win.x86,XXX YYY)
     133$(call TEST_EQ,[target@SpecialChild]_DEFS.win.amd64,XXX)
     134#$(call TEST_EQ,SpecialChild_DEFS.win.amd64,XXX) ## @todo
     135
     136$(call TEST_EQ,[target@SpecialChild]_SOURCES,file1-child.c file2.c)
     137$(call TEST_EQ,SpecialChild_SOURCES,file1-child.c file2.c)
     138
    99139all_recursive:
    100140        @kmk_echo "kBuild-define-xxxx works fine"
Note: See TracChangeset for help on using the changeset viewer.