VirtualBox

Changeset 552 in kBuild


Ignore:
Timestamp:
Sep 24, 2006 7:37:41 AM (18 years ago)
Author:
bird
Message:
  • kBuild/footer.kmk:

o Recursive template inheritance.

  • kBuild/header.kmk, kBuild/footer.kmk:

o Removed some checks for features which are present in both gmake 3.81 and kmk.

Anyone trying to bootstrap kBuild will have to build gmake 3.81 first.

  • Config.kmk, src/gmake:

o Allow all kinds of ways of saying Windows in BUILD_TARGET.

  • kBuild/bin/x86.win32/:

o Rebuilt kmk.exe.

  • kBuild/bin/x86.os2/:

o Added kDepPre.exe and kDepIDB.exe.
o Rebuilt kmk.exe and kmk_gmake.exe.

  • src/gmake:

o Update KMK_FEATURES to include the optimizations from earlier this week.

Location:
trunk
Files:
2 added
8 edited

Legend:

Unmodified
Added
Removed
  • trunk/ChangeLog

    r550 r552  
    22
    332006-09-23:
     4    - kBuild/footer.kmk:
     5        o Recursive template inheritance.
     6    - kBuild/header.kmk, kBuild/footer.kmk:
     7        o Removed some checks for features which are present in both gmake 3.81 and kmk.
     8          Anyone trying to bootstrap kBuild will have to build gmake 3.81 first.
     9    - Config.kmk, src/gmake:
     10        o Allow all kinds of ways of saying Windows in BUILD_TARGET.
     11    - kBuild/bin/x86.win32/:
     12        o Rebuilt kmk.exe.
    413    - kBuild/bin/x86.os2/:
     14        o Added kDepPre.exe and kDepIDB.exe.
    515        o Rebuilt kmk.exe and kmk_gmake.exe.
    616    - src/gmake:
     17        o Update KMK_FEATURES to include the optimizations from earlier this week.
    718        o Regenerated config.h.os2 and make adjustments to make it all
    819          build quietly on OS/2.
  • trunk/Config.kmk

    r533 r552  
    4343endif
    4444
    45 ifeq ($(BUILD_TARGET),win32)
     45ifeq ($(filter-out x86.win32 x86.win x86.nt,$(BUILD_TARGET_ARCH).$(BUILD_TARGET)),)
     46ifndef PATH_DEV
     47$(error To build on windows you'll have to set PATH_DEV to point to somewhere kbuild can find VCC70.)
     48endif
    4649TEMPLATE_BIN_TOOL               = VCC70
    4750TEMPLATE_BIN_DEFS               = WINDOWS32 _CONSOLE WIN32 __WIN32__
     
    5053TEMPLATE_BIN_CFLAGS.release     = -O2
    5154TEMPLATE_BIN_CFLAGS.profile     = -O2 -GH -Gh
     55#todo use path macros from the tool
    5256TEMPLATE_BIN_INCS              += \
    5357        . \
  • trunk/kBuild/footer.kmk

    r530 r552  
    117117# @param    bld_trg      build target.
    118118# @param    bld_trg_arch build target architecture.
     119# @remark       Obsoleted by kBuild helpers in kmk. Only required for gmake compatbility.
    119120_SOURCE_TOOL = $(strip $(firstword \
    120121        $($(target)_$(source)_$(type)TOOL.$(bld_trg).$(bld_trg_arch)) \
     
    177178#           1. Source files in the output directory are translated into a gen/ subdir.
    178179#               2. Catch anyone specifying $(PATH_SUB_CURRENT)/sourcefile.c.
     180# @remark       obsoleted by kBuild helpers in kmk. Only required for gmake compatbility.
    179181_OBJECT_BASE = $(PATH_TARGET)/$(2)/$(call no-root-slash,$(call no-drive,$(basename \
    180182        $(patsubst $(PATH_ROOT)/%,%,$(patsubst $(PATH_SUB_CURRENT)/%,%,$(patsubst $(PATH_TARGET)/$(2)/%,gen/%,$(1)))))))
     
    234236define def_template_extends_prop
    235237ifndef TEMPLATE_$(template)_$(prop)
    236 ifdef TEMPLATE_$(parent)_$(prop)
     238 ifdef TEMPLATE_$(parent)_$(prop)
    237239TEMPLATE_$(template)_$(prop) = $$(TEMPLATE_$(parent)_$(prop))
    238 endif
    239 endif
    240 endef
     240 endif
     241endif
     242endef
     243
    241244
    242245define def_template_extends
    243246ifdef TEMPLATE_$(template)_EXTENDS
    244 parent := $(strip $(TEMPLATE_$(template)_EXTENDS))
    245 
    246 $(foreach prop, $(PROPS_SINGLE) $(PROPS_ACCUMULATE) $(PROPS_DEFERRED)\
    247 $(addsuffix .$(BUILD_TARGET),                      $(PROPS_SINGLE) $(PROPS_ACCUMULATE) $(PROPS_DEFERRED))\
    248 $(addsuffix .$(BUILD_TARGET).$(BUILD_TARGET_ARCH), $(PROPS_SINGLE) $(PROPS_ACCUMULATE) $(PROPS_DEFERRED))\
    249 $(addsuffix .$(BUILD_TARGET_ARCH),                 $(PROPS_SINGLE) $(PROPS_ACCUMULATE) $(PROPS_DEFERRED))\
    250 $(addsuffix .$(BUILD_TARGET_CPU),                  $(PROPS_SINGLE) $(PROPS_ACCUMULATE) $(PROPS_DEFERRED))\
    251 $(addsuffix .$(BUILD_TYPE),                        $(PROPS_SINGLE) $(PROPS_ACCUMULATE) $(PROPS_DEFERRED))\
    252 ,$(eval $(def_template_extends_prop))) # exploits the 2 evaluation, so no value!
     247 ifndef TEMPLATE_$(template)_EXTENDS_STATUS_
     248  TEMPLATE_$(template)_EXTENDS_STATUS_ := 0
     249  parent := $(strip $(TEMPLATE_$(template)_EXTENDS))
     250
     251  # recursivly process the parent if it's inherting from somebody too.
     252  ifdef TEMPLATE_$(parent)_EXTENDS
     253   ifneq ($(TEMPLATE_$(template)_EXTENDS_STATUS_),42)
     254    # foreach will create 'template' in a new variable context hiding our current variable.
     255    $(foreach template, $(TEMPLATE_$(parent)_EXTENDS), $(eval $(value def_template_extends)))
     256    parent := $(strip $(TEMPLATE_$(template)_EXTENDS))
     257   endif
     258  endif
     259
     260  # inherit properties.
     261  $(foreach prop, $(PROPS_SINGLE) $(PROPS_ACCUMULATE) $(PROPS_DEFERRED)\
     262  $(addsuffix .$(BUILD_TARGET),                      $(PROPS_SINGLE) $(PROPS_ACCUMULATE) $(PROPS_DEFERRED))\
     263  $(addsuffix .$(BUILD_TARGET).$(BUILD_TARGET_ARCH), $(PROPS_SINGLE) $(PROPS_ACCUMULATE) $(PROPS_DEFERRED))\
     264  $(addsuffix .$(BUILD_TARGET_ARCH),                 $(PROPS_SINGLE) $(PROPS_ACCUMULATE) $(PROPS_DEFERRED))\
     265  $(addsuffix .$(BUILD_TARGET_CPU),                  $(PROPS_SINGLE) $(PROPS_ACCUMULATE) $(PROPS_DEFERRED))\
     266  $(addsuffix .$(BUILD_TYPE),                        $(PROPS_SINGLE) $(PROPS_ACCUMULATE) $(PROPS_DEFERRED))\
     267  ,$(eval $(def_template_extends_prop))) # exploits the 2 evaluation, so no value!
     268
     269  TEMPLATE_$(template)_EXTENDS_STATUS_ := 42
     270 else
     271  # protect against inheritance loops.
     272  ifneq ($(TEMPLATE_$(template)_EXTENDS_STATUS_),42)
     273   $(error kBuild: inheritance loop! template=$(template))
     274  endif
     275 endif
    253276endif
    254277endef
     
    495518## wrapper the compile command dependency check.
    496519ifndef NO_COMPILE_CMDS_DEPS
    497  ifdef NEW_KMK
     520 ifneq ($(filter comp-vars,$(KMK_FEATURES)),)
    498521_DEP_COMPILE_CMDS = $(comp-vars $(target)_$(source)_CMDS_PREV_,$(target)_$(source)_CMDS_,FORCE)
    499522 else
     
    595618# @param    bld_trg_arch  Build target arch.
    596619# @param    bld_trg_cpu   Build target cpu.
     620# @remark       obsoleted by kBuild helpers in kmk. Only required for gmake compatbility.
    597621#
    598622define def_target_source_c_cpp_asm_old
     
    868892        $($(target)_$(source)_$(type)FLAGS.$(bld_trg).$(bld_trg_arch))\
    869893        $($(target)_$(source)_$(type)FLAGS.$(bld_trg_cpu))
     894# this isn't 100% in sync with kBuild, but it doesn't matter as it's only for gmake now.
    870895objsuff     := $(firstword \
    871896        $($(target)_$(source)_OBJSUFF.$(bld_trg).$(bld_trg_arch))\
     
    966991def_target_source_c_cpp_asm_new = $(kb-src-one x)
    967992
    968 ifdef NEW_KMK
     993ifneq ($(filter kb-src-one,$(KMK_FEATURES)),)
    969994def_target_source_c_cpp_asm_var = def_target_source_c_cpp_asm_new
    970995else
  • trunk/kBuild/header.kmk

    r547 r552  
    163163# Common definitions.
    164164#
    165 ifeq ($(filter abspath,$(KMK_FEATURES)),abspath)
    166 
    167165PATH_CURRENT        := $(abspath $(CURDIR))
    168166ifneq ($(strip $(SUB_DEPTH)),)
     
    172170endif
    173171PATH_ROOT           := $(abspath $(PATH_CURRENT)/$(DEPTH))
    174 
    175 else
    176 
    177 PATH_CURRENT        := $(CURDIR)
    178 PATH_SUB_CURRENT    := $(PATH_CURRENT)
    179 ifneq ($(strip $(SUB_DEPTH)),)
    180 ifneq ($(SUB_DEPTH),.)
    181 $(foreach d,$(subst /, ,$(SUB_DEPTH)), $(eval PATH_SUB_CURRENT := $(patsubst %/,%,$(dir $(PATH_SUB_CURRENT)))) )
    182 endif
    183 endif
    184 PATH_ROOT           := $(PATH_CURRENT)
    185 ifneq ($(DEPTH),.)
    186 $(foreach d,$(subst /, ,$(DEPTH)), $(eval PATH_ROOT := $(patsubst %/,%,$(dir $(PATH_ROOT)))) )
    187 endif
    188 
    189 endif
    190172
    191173# Subdirectory relative to the root.
     
    220202PATH_KBUILD         := $(PATH_ROOT)/kBuild
    221203endif
    222 ifeq ($(filter abspath,$(KMK_FEATURES)),abspath)
    223204PATH_KBUILD         := $(abspath $(PATH_KBUILD))
    224 endif
    225205# kBuild files which might be of interest.
    226206FILE_KBUILD_HEADER  := $(PATH_KBUILD)/header.kmk
     
    455435#
    456436# @param        $1      The paths to make absolute.
    457 ifeq ($(filter abspath,$(KMK_FEATURES)),abspath)
    458437ABSPATH = $(abspath $(1))
    459 else
    460 ABSPATH = $(foreach path,$(1)\
    461             ,$(strip $(if $(subst <,,$(firstword $(subst /, ,<$(path)))),\
    462                       $(if $(patsubst %:,,$(firstword $(subst :,: ,$(path)))),$(PATH_CURRENT)/$(path),$(path)),\
    463                       $(path))))
    464 endif
    465438
    466439## DIRDEP - make create directory dependencies.
  • trunk/src/gmake/Makefile.kmk

    r541 r552  
    1010kmk_DEPS = $(PATH_TARGET)/config.h
    1111kmk_INCS = $(PATH_TARGET) .
    12 #kmk_INCS.win32      = kmkbuiltin/w32
     12#ifeq ($(filter-out win32 win64 win nt,$(BUILD_TARGET)),)
     13#kmk_INCS += kmkbuiltin/w32
     14#endif
    1315
    1416kmk_DEFS = \
     
    5658        kbuild.c
    5759
    58 kmk_SOURCES.win32 = \
     60ifeq ($(filter-out win32 win64 win nt,$(BUILD_TARGET)),)
     61kmk_SOURCES += \
    5962        getopt.c \
    6063        getopt1.c \
     
    6770        w32/compat/dirent.c \
    6871        w32/pathstuff.c
     72endif
    6973
    7074kmk_SOURCES.freebsd = \
     
    9296        kmkbuiltin/strlcpy.c
    9397
    94 kmk_SOURCES.win32 += \
     98ifeq ($(filter-out win32 win64 win nt,$(BUILD_TARGET)),)
     99kmk_SOURCES += \
    95100        kmkbuiltin/mscfakes.c \
    96101        kmkbuiltin/fts.c
    97 
     102endif
    98103
    99104#
     
    116121        kmkbuiltin/strlcpy.c \
    117122        kmkbuiltin/err.c
    118 kmk_cp_INCS.win32 = $(PATH_TARGET) .
    119 kmk_cp_DEFS.win32 = HAVE_CONFIG_H
    120 kmk_cp_SOURCES.win32 = \
     123ifeq ($(filter-out win32 win64 win nt,$(BUILD_TARGET)),)
     124kmk_cp_INCS += $(PATH_TARGET) .
     125kmk_cp_DEFS += HAVE_CONFIG_H
     126kmk_cp_SOURCES += \
    121127        kmkbuiltin/mscfakes.c \
    122128        kmkbuiltin/fts.c \
     
    124130        getopt.c \
    125131        getopt1.c
     132endif
    126133
    127134kmk_echo_TEMPLATE = BIN
     
    129136kmk_echo_SOURCES = \
    130137        kmkbuiltin/echo.c
    131 kmk_echo_SOURCES.win32 = \
     138ifeq ($(filter-out win32 win64 win nt,$(BUILD_TARGET)),)
     139kmk_echo_SOURCES += \
    132140        kmkbuiltin/mscfakes.c \
    133141        kmkbuiltin/err.c
     142endif
    134143
    135144kmk_install_TEMPLATE = BIN
     
    140149        kmkbuiltin/strmode.c \
    141150        kmkbuiltin/setmode.c
    142 kmk_install_INCS.win32 = $(PATH_TARGET) .
    143 kmk_install_DEFS.win32 = HAVE_CONFIG_H
    144 kmk_install_SOURCES.win32 = \
    145         kmkbuiltin/mscfakes.c \
    146         getopt.c \
    147         getopt1.c
     151ifeq ($(filter-out win32 win64 win nt,$(BUILD_TARGET)),)
     152kmk_install_INCS += $(PATH_TARGET) .
     153kmk_install_DEFS += HAVE_CONFIG_H
     154kmk_install_SOURCES += \
     155        kmkbuiltin/mscfakes.c \
     156        getopt.c \
     157        getopt1.c
     158endif
    148159
    149160kmk_ln_TEMPLATE = BIN
     
    152163        kmkbuiltin/ln.c \
    153164        kmkbuiltin/err.c
    154 kmk_ln_INCS.win32 = $(PATH_TARGET) .
    155 kmk_ln_DEFS.win32 = HAVE_CONFIG_H
    156 kmk_ln_SOURCES.win32 = \
     165ifeq ($(filter-out win32 win64 win nt,$(BUILD_TARGET)),)
     166kmk_ln_INCS += $(PATH_TARGET) .
     167kmk_ln_DEFS += HAVE_CONFIG_H
     168kmk_ln_SOURCES += \
    157169        kmkbuiltin/mscfakes.c\
    158170        getopt.c \
    159171        getopt1.c
     172endif
    160173
    161174kmk_mkdir_TEMPLATE = BIN
     
    165178        kmkbuiltin/err.c \
    166179        kmkbuiltin/setmode.c
    167 kmk_mkdir_INCS.win32 = $(PATH_TARGET) .
    168 kmk_mkdir_DEFS.win32 = HAVE_CONFIG_H
    169 kmk_mkdir_SOURCES.win32 = \
    170         kmkbuiltin/mscfakes.c \
    171         getopt.c \
    172         getopt1.c
     180ifeq ($(filter-out win32 win64 win nt,$(BUILD_TARGET)),)
     181kmk_mkdir_INCS += $(PATH_TARGET) .
     182kmk_mkdir_DEFS += HAVE_CONFIG_H
     183kmk_mkdir_SOURCES += \
     184        kmkbuiltin/mscfakes.c \
     185        getopt.c \
     186        getopt1.c
     187endif
    173188
    174189kmk_rm_TEMPLATE = BIN
     
    178193        kmkbuiltin/err.c \
    179194        kmkbuiltin/strmode.c
    180 kmk_rm_INCS.win32 = $(PATH_TARGET) .
    181 kmk_rm_DEFS.win32 = HAVE_CONFIG_H
    182 kmk_rm_SOURCES.win32 = \
     195ifeq ($(filter-out win32 win64 win nt,$(BUILD_TARGET)),)
     196kmk_rm_INCS += $(PATH_TARGET) .
     197kmk_rm_DEFS += HAVE_CONFIG_H
     198kmk_rm_SOURCES += \
    183199        kmkbuiltin/mscfakes.c\
    184200        getopt.c \
    185201        getopt1.c
     202endif
    186203
    187204
     
    223240        remote-stub.c
    224241
    225 kmk_gmake_SOURCES.win32 = \
     242ifeq ($(filter-out win32 win64 win nt,$(BUILD_TARGET)),)
     243kmk_gmake_SOURCES += \
    226244        getopt.c \
    227245        getopt1.c \
     
    234252        w32/compat/dirent.c \
    235253        w32/pathstuff.c
     254endif
    236255
    237256kmk_gmake_SOURCES.freebsd = \
  • trunk/src/gmake/variable.c

    r534 r552  
    988988
    989989  /* Define KMK_FEATURES to indicate various working KMK features. */
    990   (void) define_variable ("KMK_FEATURES", 12, "abspath toupper tolower", o_default, 0);
    991 #endif
     990# if defined(CONFIG_WITH_TOUPPER_TOLOWER) \
     991  && defined(CONFIG_WITH_VALUE_LENGTH) && defined(CONFIG_WITH_COMPARE) \
     992  && defined(KMK_HELPERS)
     993  (void) define_variable ("KMK_FEATURES", 12,
     994                          "abspath"
     995                          " toupper tolower"
     996                          " comp-vars"
     997                          " kb-src-tool kb-obj-base kb-obj-suff kb-src-prop kb-src-one"
     998                          , o_default, 0);
     999# else /* MSC can't deal with strings mixed with #if/#endif, thus the slow way. */
     1000  strcpy(buf, "abspath");
     1001#  if defined(CONFIG_WITH_TOUPPER_TOLOWER)
     1002  strcat(buf, " toupper tolower");
     1003#  endif
     1004#  if defined(CONFIG_WITH_VALUE_LENGTH) && defined(CONFIG_WITH_COMPARE)
     1005  strcat(buf, " comp-vars");
     1006#  endif
     1007#  ifdef KMK_HELPERS
     1008  strcat(buf, " kb-src-tool kb-obj-base kb-obj-suff kb-src-prop kb-src-one");
     1009#  endif
     1010  (void) define_variable ("KMK_FEATURES", 12, buf, o_default, 0);
     1011# endif
     1012#endif /* KMK */
    9921013
    9931014#ifdef CONFIG_WITH_KMK_BUILTIN
Note: See TracChangeset for help on using the changeset viewer.

© 2024 Oracle Support Privacy / Do Not Sell My Info Terms of Use Trademark Policy Automated Access Etiquette