Introduced new build system features: The variable HAIKU_DONT_INCLUDE_SRC to
turn off the inclusion of src/Jamfile, and the rule DeferredSubInclude to include a subdirectory in UserBuildConfig. Together they allow a developer working on a subproject to reduce jam's parsing time when only building the subproject. Relevant mostly on BeOS; on Linux jam is pretty fast anyway. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@20321 a95241bf-73f2-0310-859d-f6bbb57e9c96
This commit is contained in:
parent
eb9b19800b
commit
48d60fa69c
13
Jamfile
13
Jamfile
@ -132,4 +132,15 @@ Depends ScreenSaverKit :
|
|||||||
Haiku
|
Haiku
|
||||||
;
|
;
|
||||||
|
|
||||||
SubInclude HAIKU_TOP src ;
|
# Optionally we allow not to include the "src" subdirectory.
|
||||||
|
if $(HAIKU_DONT_INCLUDE_SRC) {
|
||||||
|
# Don't include "src", but at least include the stuff needed for the
|
||||||
|
# build.
|
||||||
|
SubInclude HAIKU_TOP src build ;
|
||||||
|
SubInclude HAIKU_TOP src tools ;
|
||||||
|
} else {
|
||||||
|
SubInclude HAIKU_TOP src ;
|
||||||
|
}
|
||||||
|
|
||||||
|
# Perform deferred SubIncludes.
|
||||||
|
ExecuteDeferredSubIncludes ;
|
||||||
|
@ -397,5 +397,44 @@ rule FStandardHeaders
|
|||||||
return $(headers) ;
|
return $(headers) ;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
rule DeferredSubInclude params
|
||||||
|
{
|
||||||
|
# DeferredSubInclude <subdir tokens> ;
|
||||||
|
#
|
||||||
|
# Takes the same parameter as SubInclude. The the subdirectory referred to
|
||||||
|
# by <subdir tokens> will be included when ExecuteDeferredSubIncludes is
|
||||||
|
# invoked, i.e. at the end of the root Jamfile.
|
||||||
|
|
||||||
|
HAIKU_DEFERRED_SUB_INCLUDES += "/" $(params) ;
|
||||||
|
}
|
||||||
|
|
||||||
|
rule ExecuteDeferredSubIncludes
|
||||||
|
{
|
||||||
|
# ExecuteDeferredSubIncludes ;
|
||||||
|
#
|
||||||
|
# Performs the deferred SubIncludes scheduled by DeferredSubInclude.
|
||||||
|
|
||||||
|
local tokensList = $(HAIKU_DEFERRED_SUB_INCLUDES) ;
|
||||||
|
while $(tokensList) {
|
||||||
|
# chop off leading "/"
|
||||||
|
tokensList = $(tokensList[2-]) ;
|
||||||
|
|
||||||
|
# get the tokens for the next include
|
||||||
|
local tokens ;
|
||||||
|
while $(tokensList) && $(tokensList[1]) != "/" {
|
||||||
|
tokens += $(tokensList[1]) ;
|
||||||
|
tokensList = $(tokensList[2-]) ;
|
||||||
|
}
|
||||||
|
|
||||||
|
# perform the include
|
||||||
|
if $(tokens) {
|
||||||
|
SubInclude $(tokens) ;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
# The variable used to collect the deferred SubIncludes.
|
||||||
|
HAIKU_DEFERRED_SUB_INCLUDES = ;
|
||||||
|
|
||||||
# SUBDIRSYSHDRS shall be reset automatically for each subdir
|
# SUBDIRSYSHDRS shall be reset automatically for each subdir
|
||||||
SUBDIRRESET += SYSHDRS ;
|
SUBDIRRESET += SYSHDRS ;
|
||||||
|
@ -75,3 +75,19 @@ AddTargetVariableToScript test.inc : fs_shell_command : fsShellCommand ;
|
|||||||
# used, i.e. a variable "rc" referring to the rc command built for the host
|
# used, i.e. a variable "rc" referring to the rc command built for the host
|
||||||
# platform is defined in the script.
|
# platform is defined in the script.
|
||||||
AddTargetVariableToScript test.inc : <build>rc ;
|
AddTargetVariableToScript test.inc : <build>rc ;
|
||||||
|
|
||||||
|
|
||||||
|
# Optimizing Jamfile Parsing Times
|
||||||
|
|
||||||
|
# Setting this variable will prevent the root Jamfile to include the Jamfile
|
||||||
|
# in the src directory. Instead only the directories required for building the
|
||||||
|
# build tools are included. Only useful in combination with DeferredSubInclude.
|
||||||
|
HAIKU_DONT_INCLUDE_SRC = 1 ;
|
||||||
|
|
||||||
|
# Schedule the given subdirectory for inclusion at the end of the root
|
||||||
|
# Jamfile (directly using SubInclude here is not possible). Using this
|
||||||
|
# feature together with HAIKU_DONT_INCLUDE_SRC allows developers working
|
||||||
|
# only on a subproject to reduce Jamfile parsing times considerably.
|
||||||
|
DeferredSubInclude HAIKU_TOP src tests add-ons kernel file_systems
|
||||||
|
userlandfs ;
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user