# # CWM. # # There are a number of modifications made to Jam which you can either # accept or reject as you wish. # # # To turn on one of these features, either alter the default below or # set it on the Jam command line, like: # jam -sHeaderCache=1 # AllOptions ?= "" ; DynamicCommandSize ?= True ; ImprovedWarnings ?= True ; SerialOutput ?= "" ; SlashModifiers ?= True ; HeaderCache ?= "" ; OptionalHeaders ?= "" ; GraphDebugDump ?= True ; LargeBuildOutput ?= "" ; TimeStamps ?= "" ; DebugOutputMods ?= True ; NocareNodes ?= True ; NTBatchFileFix ?= True ; # ---------------------------------------------------------------------- # A rule that checks a variable, if its set, it adds the define to the # list of defines OPT_DEFINES = ; rule config { if $($(<)) || $(AllOptions) { OPT_DEFINES += $(2) ; ECHO "Config:" $(<) is on ; } else { ECHO "Config:" $(<) is off ; } } if $(AllOptions) { ECHO "Config:" AllOptions is on ; } else { ECHO "Config:" AllOptions is off ; } # ---------------------------------------------------------------------- # A note on the names of the defines. # # An optional part of Jam is initially an extension. # # If an extension is accepted into to the mainline, its define is either # removed completely and the code simply placed into the mainline in a # non-conditional manner, or the EXT extension is dropped and it remains # conditional. # # For example, if the header cache code is accepted into the mainline but # as a continuing option to the build, the define would be OPT_HEADER_CACHE, # not OPT_HEADER_CACHE_EXT. # # Or something like that. Just an idea. # When creating the actions command buffer, dynamically grow the buffer # to as large as needed. Even though some shells are not able to accept # very large buffers - some OSs support amazingly large commands. Multi # mega-byte commands are ok on Solaris, HPUX, Linux, etc config DynamicCommandSize : OPT_DYNAMIC_COMMAND_SIZE_EXT ; # Try to associate a filename and line number with errors and warnings config ImprovedWarnings : OPT_IMPROVED_WARNINGS_EXT ; # Actions write their output into temporary files. When an action # completes, the files contents are displayed along with the associated # jam action line. This serializes the output from Jam - however it # introduces a latency in that you don't see what Jam is doing as it # works on an action, you only see the results afterwards config SerialOutput : OPT_SERIAL_OUTPUT_EXT ; # Add support for the variable expansion modifiers: # $(foo:/) - which converts all \ characters to /, and # $(foo:\) - which converts all / characters to \ # These are useful mainly on NT to get the pathname syntax you want config SlashModifiers : OPT_SLASH_MODIFIERS_EXT ; # The header cache is used to cache the results from the scan of each # file to find headers. Pretty much as it sounds. # # When Jam is started, the header cache is read into a hash table. Then # as each file is about to be scanned for headers, it is looked up in # the cache, and if its there and the files timestamp agrees with the # cache then the cache's results are used. This is really useful for large # builds. config HeaderCache : OPT_HEADER_CACHE_EXT ; # This option allows you to ignore header dependencies when building with # Jam. If you are working with a large system, and you have modified a # low level header, you may want to delay the full build Jam would do # when it sees the dependencies that are out of date. By building with # this option, you can specify a command line argument to have include # file dependencies ignored for a build. config OptionalHeaders : OPT_HEADER_OPTION_EXT ; # This option enables a new debugging level, which outputs a more # readable form of the dependency graph, debug level 10. This may be # useful for people trying to understand a problem with the dependency # graph config GraphDebugDump : OPT_GRAPH_DEBUG_EXT ; # This option controls a variety of minor mods to the output of Jam which # I found more suitable when working with large systems. YMMV. config LargeBuildOutput : OPT_LARGE_BUILD_EXT ; # This option places time stamps on various output messages in jam. I # found this useful to guage the performance of long builds, to find # where most of the time was spent. config TimeStamps : OPT_TIME_STAMP_OUTPUT_EXT ; # Various minor mods to the output config DebugOutputMods : OPT_OUTPUT_MOD_EXT ; # This option allows you to mark an intermediate node as being # NOCARE. If an action related to the building of this node fails, # any dependencies on this NOCARE node continue anyway. This is useful # when partial results from the build are useful. config NocareNodes : OPT_NOCARE_NODES_EXT ; # This option fixes a problem with the naming of batch files on NT. # If more than one instance of Jam was run, there was a naming conflict # and the files would clobber each other config NTBatchFileFix : OPT_FIX_NT_BATCH_EXT ; # ---------------------------------------------------------------------- # Propogate the defines into the compiler flags if $(UNIX) { CCFLAGS += -D$(OPT_DEFINES) ; } else if $(NT) { CCFLAGS += /D$(OPT_DEFINES) ; } else { ECHO The build options are not supported on this platform. ; }