JamPlus 0.2 Released

JamPlus 0.2 has been released
Added by Joshua Jensen almost 9 years ago

New features for 0.2:

  • Visual Studio 2005 and 2008 solution and vcproj files.


  • In some manner, every JamPlus feature is documented (we hope).

Jam Executable:

  • Fixed a 'don't know how to make' bug when trying to create the subdirectory . (period)
  • Fixed an MD5 network cache issue in filecache_fillvalues. Reported by Jan van Valburg.
  • Fixed the -T command line option which, in turn, fixed the -t command line option.
  • Added the MightNotUpdate flag to work as a single target alternate to Needs.
  • Fixed directory file pattern match for $(dir/:W).
  • Fixed variable expansion modifier issues when extra colons are present.
  • Altered the way the :I= and :X= variable expansion modifiers work to better fit the documentation.
  • Addded the :T variable expansion modifier to expand to the bound name.
  • For the :W modifier, grab the files earlier in the variable expansion.
  • Only compile a given regular expression once. This existed in the original version of the header scanning code but not the HDRPIPE version.
  • Optimized retrieval of directories from the timestamp() code. This results in a very limited number of file queries for directories that cannot possibly exist. See OPT_TIMESTAMP_EXTENDED_PARENT_CHECK_EXT.
  • Fixed path delimiter in pathunix.c.
  • Made UseMD5Callback a built-in rule, instead of having it sit in the Jambase.
  • Removed the need to compile and link against the LuaPlus library when the Lua support was turned on.
  • Added Subst rule, based on Lua's string.gsub.
  • Added CppCompileOptions.
  • Bug fix for multiple passes.


  • Re-added basic MinGW support, accessible by setting the COMPILER variable to mingw.
  • SubIncluding a given Jamfile only happens once.
  • Exits when an incorrect platform or configuration is specified.
  • Added OutputPostfix, OutputPostfixClear, and OutputSuffix.
  • For Visual Studio 2005, made the Microsoft .NET SDK include and library paths available.
  • WINDOWS was not a side-by-side define with WIN32. Fixed.
  • Attempt to load a Jamrules-style file called .jamrules.
  • Fix import library dependencies for DLLs.
  • Allow an additional optional SubDir parameter denoting a 'target' in the grist. LOCATE_SOURCE, LOCATE_TARGET, and SOURCE_GRIST all append it.
  • IncludeModule: Modules can only be included once.
  • Added ReferenceDirectories for .NET references.
  • Added BatchCompileGroupSize. The default batch compilation group size is unlimited.
  • Fixed precompiled header support to allow precompiled header .cpp files with relative paths attached to the name. Uses the BINDING to control the output location.
  • Assign LINK_TARGET variable to the TARGET when setting up an executable or shared library link, so later post-build steps can get access to the binary without a complex look up.
  • Library's OPTIONS now accepts 'noexportlib'.
  • Re-added ObjectCFlags and rule_ObjectC++Flags "ObjectC++Flags".
  • Added rule_FGristDirectories "FGristDirectories" rule.
  • Lump rule handles .cxx.
  • PrecompiledHeader rule accepts a shortened version where the .cpp and .h are determined by a single parameter.
  • Optimization - Don't scan inside .lib files, since the .obj files are present by default.
  • Major C/C++ compilation optimizations.
  • Fix support for .c precompiled headers.
  • Add CRuntimeType to change between statically linked and dynamically linked C runtimes for Visual C++.
  • Remove VC5 support, since I have no way of testing it.
  • Change grists to be project level and not subdirectory level.
  • LINKDIRECTORIES was set up wrong and put in the global variable list. This is corrected now, and the initial LINKDIRECTORIES is assigned to *.
  • Moved DEFINES down with the platform they represent.
  • Change <dir> grist to <!dir!>.
  • Minor clean up for calculation of MSVCNT and MSVCNT_PATH.
  • Moved the MSVCNT_PATH first in the PATH.
  • Get rid of top-level dependencies that don't mean anything.
  • Removed unused script and targets.

Jam Modules:

  • MFC module: Removed automatic ATL and MFC include and library paths. IncludeModule MFC to access the paths and apply ATL/MFC support to a target.
  • DirectX module: Removed automatic DirectX include and library paths and added DirectX module. IncludeModule DirectX to apply DirectX support to a target.
  • wxWidgets module: Minor fix when generating the target name.
  • wxWidgets module: Added contrib libraries support. Only supports stc for now.
  • DotNet module: Add StrongName rule.
  • CopyDirectory and CopyFile modules: When generating a workspace that uses CopyDirectory and CopyFile, files would get copied. Both rules now guard against that during workspace generation.


  • For the source Jamfile path, handle the case where Jamfile.jam is not specified.
  • When a project is specified as existing in a workspace but has not been defined, pop up an error message instead of crashing.
  • Handle quotes inside the preprocessor defines.
  • Fix JamToWorkspace conversion when the target name is implicit and specified through ActiveProject.


  • Make the batch maxtargets sample a little more clear.
  • helloworld test that is slightly more complicated than the helloworld sample app.
  • Add md5test.jam in tests/md5/.
  • Add tests/expand/expandtests.jam.
  • Very simple generatedheader test added.
  • tests/source_and_jamfiles_separate example added.
  • Batch file in samples/sharedlib/ to create a CodeBlocks MinGW project.
  • Lua parsing phase examples in tests/lua/testluaparser.jam and tests/lua/testluaparser.jam.lua
  • Added tutorial 02-helloworld-static.
  • Useful output in the filecache_luamd5callback test.
  • tests/compile_outputastree/ - Fix obj/ output location.
  • Add .fx compilation sample.