mirror of
https://github.com/bulletphysics/bullet3
synced 2024-12-16 14:40:05 +00:00
ec56a978f7
Misc property fixes.
129 lines
4.3 KiB
Plaintext
129 lines
4.3 KiB
Plaintext
#==============================================================================
|
|
# Utility functions for collecting information about the Jam environment.
|
|
# Copyright (C)2004 by Eric Sunshine <sunshine@sunshineco.com>
|
|
#
|
|
# This library is free software; you can redistribute it and/or modify it
|
|
# under the terms of the GNU Library General Public License as published by
|
|
# the Free Software Foundation; either version 2 of the License, or (at your
|
|
# option) any later version.
|
|
#
|
|
# This library is distributed in the hope that it will be useful, but
|
|
# WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
|
|
# or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Library General Public
|
|
# License for more details.
|
|
#
|
|
# You should have received a copy of the GNU Library General Public License
|
|
# along with this library; if not, write to the Free Software Foundation,
|
|
# Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
|
|
#
|
|
#==============================================================================
|
|
|
|
#------------------------------------------------------------------------------
|
|
# When the target "dumptargets" is invoked, dump the top-level, user-visible
|
|
# build targets as a whitespace-delimited list to the file named by the Jam
|
|
# variable DUMPTARGETS_FILE. Example:
|
|
#
|
|
# jam -sDUMPTARGETS_FILE=targets.txt dumptargets
|
|
#
|
|
# This output might be useful, for instance, when composing documentation (via
|
|
# some automated mechanism) which lists the targets visible to the user.
|
|
#
|
|
# IMPLEMENTATION NOTES
|
|
#
|
|
# The emitted target names are collected from several locations:
|
|
#
|
|
# - All single-word arguments to NotFile composed of ._- and alphanumerics.
|
|
#
|
|
# - Targets defined by the Application rule. Unlike other rules (Plugin,
|
|
# Library, etc.) which compose a top-level pseudo-target using NotFile
|
|
# (which is thus caught by the above case), on Unix, the Application rule
|
|
# does not invoke NotFile since the top-level target has the same name as
|
|
# the generated executable.
|
|
#
|
|
# - Targets defined by the ShellScript rule, since the emitted shell scripts
|
|
# have the same name as the top-level target.
|
|
#
|
|
# Collection occurs in two phases. This file must be included by build.jam
|
|
# before any other utility *.jam files are included, and it must also be
|
|
# included after all other utility *.jam files are included. In the first
|
|
# phase, the NotFile rule is re-defined so that we can catch pseudo-targets
|
|
# created by the other utility *.jam files (we must re-define NotFile before
|
|
# they are included), as well as any NotFile pseudo-targets created by Jamfiles
|
|
# throughout the project. In the second phase, the Application and ShellScript
|
|
# rules are re-defined (we must do so after application.jam has defined the
|
|
# implementations which we override). These overrides allow us to catch
|
|
# application and shell-script targets which project-wide Jamfiles define.
|
|
#------------------------------------------------------------------------------
|
|
if $(DUMPTARGETS_FILE)
|
|
{
|
|
# Jam does not support arithmetic, so we fake it with Roman numerals.
|
|
DUMPTARGETS_PASS ?= "" ;
|
|
DUMPTARGETS_PASS = "$(DUMPTARGETS_PASS)I" ;
|
|
|
|
switch $(DUMPTARGETS_PASS)
|
|
{
|
|
case I :
|
|
|
|
actions InitPseudoTargets
|
|
{
|
|
$(RM) $(<)
|
|
}
|
|
|
|
rule DumpPseudoTargets
|
|
{
|
|
NotFile $(<) ;
|
|
Always $(<) ;
|
|
Depends $(<) : $(>) ;
|
|
Always $(>) ;
|
|
InitPseudoTargets $(>) ;
|
|
}
|
|
|
|
DumpPseudoTargets dumptargets : "$(DUMPTARGETS_FILE)" ;
|
|
|
|
actions together piecemeal EmitPseudoTarget
|
|
{
|
|
echo "$(>)" >> $(<)
|
|
}
|
|
|
|
rule PossiblePseudoTarget
|
|
{
|
|
# NoCare and Includes are not actually required; they are used here merely to
|
|
# avoid Jam's "using independent target" warning. Note, however, that Jam
|
|
# 2.4 and BoostJam try building the target despite the fact that we NoCare
|
|
# about it. (Presumably this is because the targets have updating actions,
|
|
# and those actions override the NoCare.) Consequently, we have to put up
|
|
# with the "using independent target" warnings for these older Jam versions.
|
|
NoCare $(<) ;
|
|
if $(JAMVERSION) != 2.4 { Includes dumptargets : $(<) ; }
|
|
|
|
local i ;
|
|
for i in $(<)
|
|
{
|
|
local s = [ Match ^([A-Za-z0-9_.-]+)$ : $(i) ] ;
|
|
if $(s)
|
|
{
|
|
EmitPseudoTarget "$(DUMPTARGETS_FILE)" : $(i) ;
|
|
}
|
|
}
|
|
}
|
|
|
|
rule NotFile
|
|
{
|
|
PossiblePseudoTarget $(<) ;
|
|
}
|
|
|
|
case II :
|
|
|
|
rule Application
|
|
{
|
|
PossiblePseudoTarget $(<) $(<)clean ;
|
|
}
|
|
|
|
rule ShellScript
|
|
{
|
|
PossiblePseudoTarget $(<) $(<)clean ;
|
|
}
|
|
|
|
}
|
|
}
|